我有一个跨多个计算机的VM的多节点网络,一个管理VM和7-15个工作虚拟机。我想在管理VM上运行NTP服务器,让所有工作虚拟机与漫游虚拟机同步。
从那里开始,我计划在每个工作虚拟机上创建一个python进程,从一个开始日期起,在任意时间生成一个新线程。当需要生成新线程时,每个进程都会提前知道(即进程何时开始)。
我能想到的一种方法是将机器与NTP同步,从当前时间减去已知的等待时间,然后在差异上打电话给我们。
伪代码
for ii in eventTimes:
curTime = getCurrentTime()
waitTime = ii - curTime
usleep(waitTime)
spawnEventThread()
线程之间没有共享数据。每个生成的线程之间的最短时间是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()
调用更改为获取网络时间的函数,那么您应该很高兴。