2011-09-19 51 views
2

我有一个虚拟机跨多个机器,一个管理虚拟机和7-15个工作虚拟机的多节点网络。我想在管理虚拟机上运行NTP服务器,并让所有工作虚拟机与冗余虚拟机同步。与Python精确事件同步

从那里我打算在每个工作虚拟机上有一个python进程在一个开始日期的任意时间产生一个新线程。当需要产生新线程时,每个进程都会提前知道(即进程何时开始)。

我能想到的一种方法是使机器与NTP同步,从当前时间中减去已知的等待时间,然后调用它们的差值。

伪代码

for ii in eventTimes: 
    curTime = getCurrentTime() 
    waitTime = ii - curTime 
    usleep(waitTime) 
    spawnEventThread() 

还有的线程之间没有共享数据。每个线程产生的最短时间为1秒,并且它们应该足够简单以完成他们在那一秒内所做的任何事情。

任何帮助表示赞赏

回答

0

如果你可以运行在管理虚拟机的NTP服务器,你可以打,与纯Python代码NTP服务器,以获得“大师”的时间,然后使用它作为一个基地偏移量计算。

>>> import ntplib,datetime 
>>> x = ntplib.NTPClient() 
>>> datetime.datetime.utcfromtimestamp(x.request('master server').tx_time 
datetime.datetime(2011, 9, 19, 17, 59, 24, 679769) 

如果更改getCurrentTime()呼叫你的榜样到获取网络时间的函数,你要善于去。