我想每60秒在Python上执行一个函数,但是我不想同时被阻塞。
如何异步进行?
import threading import time def f(): print("hello world") threading.Timer(3, f).start() if __name__ == '__main__': f() time.sleep(20)
使用此代码,函数f在20秒time.time中每3秒执行一次。最后,它给出了一个错误,我认为这是因为threading.timer尚未被取消。
如何取消呢?
提前致谢!
您可以尝试threading.Timer类:http : //docs.python.org/library/threading.html#timer- objects。
import threading def f(f_stop): # do something here ... if not f_stop.is_set(): # call f() again in 60 seconds threading.Timer(60, f, [f_stop]).start() f_stop = threading.Event() # start calling f now and every 60 sec thereafter f(f_stop) # stop the thread when needed #f_stop.set()