首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python实现精确的事件同步

使用Python实现精确的事件同步
EN

Stack Overflow用户
提问于 2011-09-20 04:53:22
回答 1查看 302关注 0票数 3

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

从那时起,我计划在每个工作者VM上创建一个python进程,从一个开始日期开始,在任意时间产生一个新线程。每个进程都会提前知道何时需要产生新的线程。

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

伪码

代码语言:javascript
运行
复制
for ii in eventTimes:
   curTime = getCurrentTime()
   waitTime = ii - curTime
   usleep(waitTime)
   spawnEventThread()

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

任何帮助我们都将不胜感激

EN

回答 1

Stack Overflow用户

发布于 2011-09-20 06:02:44

如果您可以在管理VM上运行NTP服务器,则可以使用纯python代码访问该NTP服务器以获取“主”时间,然后将其用作偏移计算的基础。

代码语言:javascript
运行
复制
>>> 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()调用更改为一个获取网络时间的函数,则应该可以执行此操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7477162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档