gpt4 book ai didi

python - 意外的 tornado.ioloop.PeriodicCallback 行为

转载 作者:太空狗 更新时间:2023-10-30 01:58:42 32 4
gpt4 key购买 nike

为了弄清楚 PeriodicCallback 是如何安排的,我写了这个脚本:

import time
import tornado.ioloop

t0 = time.time()

def foo():
time.sleep(1)
print(time.time() - t0)

tornado.ioloop.PeriodicCallback(foo, 2000).start()
tornado.ioloop.IOLoop.instance().start()

我希望它每 2 秒或每 3 秒触发一次,具体取决于 Tornado 是否等到完成以安排下一个事件。但是,我得到了这个:

3.00190114975
6.00296115875
10.0029530525
14.0029621124
18.0029540062
22.0050959587
26.0040180683
30.005161047
34.0053040981

这是怎么回事?

最佳答案

即使在“后台”PeriodicCallback 中休眠,在 Tornado 应用程序中也绝不是一个好主意,因为它会阻止 IOLoop 并可能阻止它适本地安排事情。如果您使用的是 Tornado,则需要将所有长阻塞调用替换为非阻塞等效项(或将它们移至其他线程)。将 sleep 替换为 IOLoop.add_timeout,将网络操作替换为 IOStream 或其他异步库等。

关于python - 意外的 tornado.ioloop.PeriodicCallback 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24089086/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com