当我使用threading.Timer调用函数时,如下所示:
threading.Timer(LOOP_TIME,self.broadCast).start()
broadCast是否在单独的线程中运行?或者它只是在同一个线程? 我使用threading.Timer所以我可以在每隔这么长的时间间隔调用一个函数。我不希望在主线程之外调用broadCast函数。
答案 0 :(得分:2)
是。您可以查看Python threading.py
源代码:
def Timer(*args, **kwargs):
"""Factory function to create a Timer object.
Timers call a function after a specified number of seconds:
t = Timer(30.0, f, args=[], kwargs={})
t.start()
t.cancel() # stop the timer's action if it's still waiting
"""
return _Timer(*args, **kwargs)
class _Timer(Thread):
"""Call a function after a specified number of seconds:
t = Timer(30.0, f, args=[], kwargs={})
t.start()
t.cancel() # stop the timer's action if it's still waiting
"""
def __init__(self, interval, function, args=[], kwargs={}):
Thread.__init__(self)
self.interval = interval
self.function = function
self.args = args
self.kwargs = kwargs
self.finished = Event()
Source code available in Python source code repository
如果你想要计时器而你的主线程没有进行合作多任务处理,我建议你重构你的代码,以便你可以从其他线程中使用它。