用Python实现精确的事件同步

用Python实现精确的事件同步,python,Python,我有一个跨多台机器的多节点虚拟机网络,一个管理虚拟机和7-15个工作虚拟机。我希望在管理虚拟机上运行NTP服务器,并使所有工作虚拟机与管理虚拟机同步 从那时起,我计划在每个worker VM上使用python进程,从一个开始日期开始任意时间生成一个新线程。每个进程将提前知道(即进程何时启动)何时需要生成新线程 我能想到的一种方法是将机器与NTP同步,从当前时间中减去已知的等待时间,然后根据差异调用usleep 伪码 for ii in eventTimes: curTime = getCu

我有一个跨多台机器的多节点虚拟机网络,一个管理虚拟机和7-15个工作虚拟机。我希望在管理虚拟机上运行NTP服务器,并使所有工作虚拟机与管理虚拟机同步

从那时起,我计划在每个worker VM上使用python进程,从一个开始日期开始任意时间生成一个新线程。每个进程将提前知道(即进程何时启动)何时需要生成新线程

我能想到的一种方法是将机器与NTP同步,从当前时间中减去已知的等待时间,然后根据差异调用usleep

伪码

for ii in eventTimes:
   curTime = getCurrentTime()
   waitTime = ii - curTime
   usleep(waitTime)
   spawnEventThread()
线程之间没有共享数据。每个线程生成之间的最短时间是1秒,它们应该足够简单,可以在这一秒内完成它们正在做的任何事情


如果您可以在管理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()
调用更改为获取网络时间的函数,您应该可以继续执行。

您的代码在语法上不正确,并且在如何修复它方面不明确(括号位置)