如何以指定的速率执行操作

时间:2017-09-17 19:04:28

标签: python

我有一个我想打电话的功能,比方说,每秒10次。我从这样的代码开始:

while True:
    the_operation()
    time.sleep(1.0/TIMES_PER_SECOND)

这样做没问题,但是__operation的调用次数比想要的要少,因为操作本身就是时间。我们可以使代码看起来像这样:

while True:
    t = time.time()
    the_operation()
    time_to_sleep = 1.0/TIMES_PER_SECOND - (time.time() - t)
    if time_to_sleep > 0:
        time.sleep(time_to_sleep)

这样做更好,但仍然不够好 - 不考虑执行循环的时间,如果在一次迭代中,操作的时间明显长于1 / TIMES_PER_SECOND,那么我们的吞吐量就会太低。该操作平均需要少于1 / TIMES_PER_SECOND,但代码需要处理需要更长时间的情况。

以指定的速率调用the_operation有什么好的模式?

0 个答案:

没有答案