长时间睡觉时(比如跑步time.sleep(3**3**3)
)在 Python 3 中,程序返回 OverflowError 并显示错误消息“时间戳太大,无法转换为 C _PyTime_t”。我最多可以睡多久?
该值应为 9223372036.854775,即“计算中 64 位有符号整数的最大值”。看这篇维基百科文章.
提到_PyTime_t
in PEP 564:
CPython 私有“pytime”C API 处理时间现在使用新的 _PyTime_t 类型:简单的 64 位有符号整数 (C int64_t)。 _PyTime_t 单元是实现细节,而不是 API 的一部分。当前单位为 1 纳秒。
>>> 2 ** 63 / 10 ** 9
9223372036.854776
>>> time.sleep(9223372036.854775)
^CTraceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyboardInterrupt
>>> time.sleep(9223372036.854776)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: timestamp too large to convert to C _PyTime_t
>>>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)