我有一个分布在多台机器上的多节点虚拟机网络,一个管理虚拟机和7-15个工作虚拟机。我希望在管理虚拟机上运行NTP服务器,并使所有工作虚拟机与mangament同步。
从那时起,我计划在每个工作者VM上创建一个python进程,从一个开始日期开始,在任意时间产生一个新线程。每个进程都会提前知道何时需要产生新的线程。
我能想到的一种方法是将机器与NTP同步,从当前时间减去已知的等待时间,然后根据差异调用usleep。
伪码
for ii in eventTimes:
curTime = getCurrentTime()
waitTime = ii - curTime
usleep(waitTime)
spawnEventThread()
线程之间没有共享数据。每个线程之间产生的最小时间是1秒,它们应该足够简单,可以在这一秒内完成所有正在做的事情。
任何帮助我们都将不胜感激
发布于 2011-09-20 06:02:44
如果您可以在管理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()
调用更改为一个获取网络时间的函数,则应该可以执行此操作。
https://stackoverflow.com/questions/7477162
复制相似问题