时间。时间()在Cython中,循环运行预定时间时不工作

2024-04-20 13:47:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python模块,其中包含一个while循环,该循环应该运行一段固定的时间。我是通过在时间。时间()并一直运行到时间。时间()大于该变量。这没有提出任何问题,但同样的事情是不适合我在赛顿。现在我的时间越来越慢了。你知道吗

仅举一个简单的例子来说明这一点:

import time

cdef float wait_time = 3

def slow():
    cdef float end_time = time.time() + wait_time

    while time.time() < end_time:
        pass
    print("Done")
%timeit -r1 -n1 slow()
Done
44.2 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
35.5 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
35.5 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
19.5 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
35.5 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
20.6 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
20 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
56 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
1min 3s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
32.9 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r1 -n1 slow()
Done
1min 5s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

通常情况下,除了在运行函数之前暂停一段时间之外,基本上不会有等待,在这种情况下,会有过多的等待。你知道吗


Tags: ofrundevlooptimemeanstdeach
1条回答
网友
1楼 · 发布于 2024-04-20 13:47:23

Python的float是C的double。C的floatusually has只有24个有效位(其中一个是隐式的),使其精度达到128秒(自2004年以来)。当加法从向下舍入变为向上舍入时,它会从过去的一分钟变为将来的一分钟。你知道吗

相关问题 更多 >