我在群集上运行一些作业,其中每个节点上的日期稍微偏离彼此。有没有一种简单的方法来从互联网上的某个地方通过python获得时间,还是我需要让sysadmin更频繁地同步机器之间的时间?在Python中获取正确时间的简单方法
我想在每个作业的输出中加上一个时间戳,但显然Python的time.strftime()
等的准确性将取决于机器知道正确的时间。我希望在几秒钟内就能够获得准确性,但现在只需几分钟。
我在群集上运行一些作业,其中每个节点上的日期稍微偏离彼此。有没有一种简单的方法来从互联网上的某个地方通过python获得时间,还是我需要让sysadmin更频繁地同步机器之间的时间?在Python中获取正确时间的简单方法
我想在每个作业的输出中加上一个时间戳,但显然Python的time.strftime()
等的准确性将取决于机器知道正确的时间。我希望在几秒钟内就能够获得准确性,但现在只需几分钟。
尝试使用ntplib for python。我已经玩了一下,看起来很稳定。
链接已过期。这是更新的一个https://pypi.python.org/pypi/ntplib/ – shshnk 2016-03-21 23:32:57
听起来像你应该看看使用类似NTP的东西来保持机器的时间相互同步(最好是全球标准时间源)。
我处理与运行的是Linux 2.6.33,Python的2.6.5,可惜一个独立的传感器设备缺少一个实时时钟,但确实具有联网能力。此外,该设备使用BusyBox,因此它具有最小化的一组工具功能。
我创建了下面的脚本,它在网络运行后执行以纠正系统时间。我的解决方案可能不完全解决原始问题(听起来像Noah是用户而不是系统管理员),但是这个问题是通过NTP使用Python搜索同步系统时钟时出现的问题。我认为这可能会帮助其他人降落在这里。
在使用脚本之前,您需要安装ntplib。下载链接和安装说明如下:https://pypi.python.org/pypi/ntplib/。
将以下代码的内容复制到一个文件中(我命名为我的“synctime.py”)。然后,在网络运行后,执行脚本(例如“python synctime.py”)。您需要使用提升(root)权限来执行此操作,以便正常工作。
import time
import os
try:
import ntplib
client = ntplib.NTPClient()
response = client.request('pool.ntp.org')
os.system('date ' + time.strftime('%m%d%H%M%Y.%S',time.localtime(response.tx_time)))
except:
print('Could not sync with time server.')
print('Done.')
看看:http://stackoverflow.com/questions/908550/python-getting-date-online – 2011-03-07 17:36:41
这是一个解决的问题。你的系统管理员应该照顾它;你的机器的时间没有任何理由超过几分之一秒。 – kindall 2011-03-07 17:47:45