在Python中获取正确时间的简单方法
我在一个集群上运行一些任务,但每台机器上的时间稍微有点不同。有没有简单的方法可以通过Python从网上获取时间,还是说我需要让系统管理员更频繁地同步这些机器的时间呢?
我想在每个我启动的任务输出中加上时间戳,但显然,Python的 time.strftime()
等函数的准确性是依赖于机器知道正确的时间。我希望时间能准确到几秒钟,但现在的误差在几分钟之内。
5 个回答
5
听起来你应该考虑使用像 NTP 这样的工具,来让机器之间的时间保持一致(最好是和一个全球标准时间源同步)。
11
我正在处理一个独立的传感器设备,它运行的是Linux 2.6.33,Python 2.6.5,遗憾的是没有实时时钟,但它有网络功能。此外,这个设备使用BusyBox,所以它的工具功能比较简化。
我写了下面的脚本,它会在网络启动后执行,用来纠正系统时间。我的解决方案可能并不完全符合最初的问题(听起来像是Noah是系统的普通用户,而不是管理员),但这个问题是搜索使用Python通过NTP同步系统时钟时会出现的。我想这可能对其他来到这里的人有帮助。
在使用这个脚本之前,你需要安装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.')
4
可以试试 ntplib 这个 Python 库。我玩过一段时间,感觉它挺稳定的。