使用Python进行精确的事件同步

时间:2011-09-19 20:53:22

标签: python

我有一个跨多个计算机的VM的多节点网络,一个管理VM和7-15个工作虚拟机。我想在管理VM上运行NTP服务器,让所有工作虚拟机与漫游虚拟机同步。

从那里开始,我计划在每个工作虚拟机上创建一个python进程,从一个开始日期起,在任意时间生成一个新线程。当需要生成新线程时,每个进程都会提前知道(即进程何时开始)。

我能想到的一种方法是将机器与NTP同步,从当前时间减去已知的等待时间,然后在差异上打电话给我们。

伪代码

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

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

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

如果您可以在管理VM上运行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()调用更改为获取网络时间的函数,那么您应该很高兴。