【发布时间】:2021-10-19 09:55:25
【问题描述】:
我有一个 Python 程序在我的 Raspberry Pi 3B 上运行,进行大量图像处理等等。我想通过将程序写入 .csv 文件来从程序中收集一些数据测量值,并且我想为每个测量值写入相应的时间。我使用time.clock()(参见下面的代码 sn-p)来查找每次写入操作之前的时间,但在 2147 秒和 2148 秒之间,时间变为负数(参见下面的 sn-p 表)。我预计会发生某种溢出,但我无法理解它以何种方式溢出。 Raspberry Pi 是一个 32 位系统,据我了解,time.clock() 方法返回一个浮点数。时间变量不应该只在更大的值处溢出,还是在这种情况下时间变量不是 32 位?
从那时起,我已经阅读了各种线程,表明 time.time() 可能是这个用例的更好方法,我可能会在以后的测试中这样做,但我只是想看看我能用到目前为止我收集的值。我相信我可以对记录的时间进行一些处理以“消除溢出”,因为没有更好的词,并按原样使用它。有什么想法吗?
import time
import csv
def somefunction(someX, someY, csvwriter):
t = time.clock()
x = somefunc(someX)
y = somefunc(someY)
csvwriter.writerow([t, x, y])
return
| Time (s) | X value | Y value |
|---|---|---|
| 2146.978524 | -0.0019 | 0.00032 |
| 2147.30423 | -0.00191 | 0.00023 |
| -2147.336675 | -0.00182 | 0.00034 |
| -2147.000555 | -0.00164 | 0.00037 |
【问题讨论】:
-
time.clock()模块中不再有time.clock()函数。你在使用 Python 2 吗?如果是这样,您应该适当地标记您的问题。 -
@martineau 我正在使用 Python 3.7。我不知道该告诉你什么,但我使用了 time.clock()。
-
Python 3.7 仍然有time.clock,它是removed in 3.8。
-
在此之前,
time.clock()自 3.3 版起已被弃用。我在您的问题中添加了“python-3.7”标签。同时,如果您改用time.perf_counter()或time.process_time(),问题可能会消失(如链接的“新增内容”文档中所建议的那样)。我也怀疑这是一个 32 位问题,因为在文档的开头它说“此模块中的函数可能无法处理纪元之前或未来很远的日期和时间。未来的截止点是由 C 库决定;对于 32 位系统,通常是 2038 年。” -
@martineau “未来的截止点由 C 库决定;对于 32 位系统,通常在 2038 年。”谢谢,这提供了我需要的所有信息。如果您将其作为答案,我想将其标记为这样。
标签: python raspberry-pi floating-point python-3.7