脚本中的时间变量在执行期间变为负数
Time variable in script became negative during execution
我的 Raspberry Pi 3B 上有一个 Python 程序 运行 进行大量图像处理等等。我想通过将其写入 .csv 文件来从程序中收集一些数据测量值,并且我想为每个测量值写入相应的时间。我使用 time.clock()
(参见下面的代码片段)来查找每次写入操作之前的时间,但在 2147 秒和 2148 秒之间的某个时间,时间变为负数(参见下面的片段 table)。我预计会发生某种溢出,但我无法理解溢出的方式。 Raspberry Pi 是一个 32 位系统,据我了解,time.clock()
方法 returns 是一个浮点数。时间变量不应该只在更大的值时溢出,或者在这种情况下时间变量不是 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
我怀疑这是一个 32 位问题。 time
模块 Python 3.7 documentation 开头附近的第三个要点说:
- The functions in this module may not handle dates and times before the epoch or far in the future. The cut-off point in the future is determined by the C library; for 32-bit systems, it is typically in 2038.
也就是说,我真的不知道问题出在哪里。也许改用 time.perf_counter()
或 time.process_time()
函数可以避免这个问题。
我的 Raspberry Pi 3B 上有一个 Python 程序 运行 进行大量图像处理等等。我想通过将其写入 .csv 文件来从程序中收集一些数据测量值,并且我想为每个测量值写入相应的时间。我使用 time.clock()
(参见下面的代码片段)来查找每次写入操作之前的时间,但在 2147 秒和 2148 秒之间的某个时间,时间变为负数(参见下面的片段 table)。我预计会发生某种溢出,但我无法理解溢出的方式。 Raspberry Pi 是一个 32 位系统,据我了解,time.clock()
方法 returns 是一个浮点数。时间变量不应该只在更大的值时溢出,或者在这种情况下时间变量不是 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 |
我怀疑这是一个 32 位问题。 time
模块 Python 3.7 documentation 开头附近的第三个要点说:
- The functions in this module may not handle dates and times before the epoch or far in the future. The cut-off point in the future is determined by the C library; for 32-bit systems, it is typically in 2038.
也就是说,我真的不知道问题出在哪里。也许改用 time.perf_counter()
或 time.process_time()
函数可以避免这个问题。