首页 > 解决方案 > 我的线程每 10 秒运行一次,但有时该函数需要更长的时间才能运行。如何让计时器等到函数执行?

问题描述

我的线程设置与此处的最佳答案完全相同。除了我的功能比打印更复杂。

import threading

def printit():
  threading.Timer(10.0, printit).start()
  print "Hello, World!"

printit()

该函数运行大约需要 6 秒。在极少数情况下,运行需要 12-13 秒。在不通过延长等待时间而产生机会成本的情况下,如何让这个计时器等到函数运行?

标签: python

解决方案


threading.Timer(10.0, printit).start()

只是一个线程

你可以捕捉它

def printit():
    thread = threading.Timer(10.0, printit)
    thread.start()
    # ... some stuff or something
    thread.join() # wait for thread to finish ?

也许是你可以的一种方式......但为什么不跳过计时器并在最后做呢?或者真的为什么不把它放在一个循环中?

def printit():

    # ... some stuff or something
    threading.Thread(target=printit).start() # now you dont need to worry about it

但我真的不明白你为什么不只是使用循环......这似乎增加了复杂性而没有真正实现对你有用的任何东西


推荐阅读