在Python中获取正确时间的简单方法

6 投票
5 回答
38751 浏览
提问于 2025-04-16 13:10

我在一个集群上运行一些任务,但每台机器上的时间稍微有点不同。有没有简单的方法可以通过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 库。我玩过一段时间,感觉它挺稳定的。

https://pypi.python.org/pypi/ntplib/

撰写回答