我有一个多节点虚拟机网络,分布在多台机器上,一台管理虚拟机和 7-15 台工作虚拟机。我想在管理虚拟机上运行一个 NTP 服务器,并让所有工作虚拟机与管理虚拟机同步。
从那里我计划在每个工作虚拟机上有一个 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() 调用更改为获取网络时间的函数,您就可以开始了。
