我遇到一个非常奇怪的问题。我正在使用def repl(m): return m.group(0)+' <property 4> value </property 4>\n'
xml_str = re.sub('<item(?:(?!<property 4).)*?(?=</item>)', repl, xml_str, 0, re.S)
控制I / O库中的超时。我已经隔离了第二个调用gettimeofday
的返回时间比第一次更早的问题。
我已经完成了一个简单的测试演示,揭示了问题所在。它只会在运行Ubuntu 18.04.1 LTS的虚拟机(virtualbox)中发生。
gettimeofday
运行代码时,我得到如下信息:
#include <unistd.h>
#include <stdio.h>
#include <sys/time.h>
unsigned long GetTickCount()
{
struct timeval start, end;
unsigned long myTickCount;
gettimeofday(&start, NULL);
myTickCount =start.tv_sec*1000+start.tv_usec/1000;
return myTickCount;
}
main()
{
unsigned long a,b;
while(1) {
a=GetTickCount();
usleep(100000);
b=GetTickCount();
if(a>b)
printf("a: %ld, b:%ld, b-a=%ld\r\n",a,b,b-a);
}
}
如果仔细检查,将发现故障每31.5秒出现一次。
有关正在发生的事情的一些提示? 这是一种由virtualbox调整的时钟漂移吗?