python - 我的线程每 10 秒运行一次,但有时该函数需要更长的时间才能运行。如何让计时器等到函数执行?
问题描述
我的线程设置与此处的最佳答案完全相同。除了我的功能比打印更复杂。
import threading
def printit():
threading.Timer(10.0, printit).start()
print "Hello, World!"
printit()
该函数运行大约需要 6 秒。在极少数情况下,运行需要 12-13 秒。在不通过延长等待时间而产生机会成本的情况下,如何让这个计时器等到函数运行?
解决方案
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
但我真的不明白你为什么不只是使用循环......这似乎增加了复杂性而没有真正实现对你有用的任何东西
推荐阅读
- javascript - 为什么选择在绑定到模型时显示它的第一个元素
- git - 同一用户的 Git 用户权限
- mysql - SQL:根据两个最近关联记录的比较选择记录
- python - 嵌套 Python3 字典有问题
- django - 如何让用户在用户仪表板中编辑自定义用户模型详细信息并在 django 中的模型中进行更新?
- ios - 如何使用 react native firebase 动态链接获取 iOS 的初始链接?
- python - 创建一个返回多年来每小时记录的最大降水值年份的函数?
- python - 如何修复“请求的技能响应有问题”错误?
- image-processing - 检测旋转的车辆图像
- ios - 条件绑定的初始化程序必须具有 Optional 类型,而不是 '[AnyHashable : Any]'