如何在Python中无线程调度事件?
在Python中,有没有办法不使用多线程就安排一个事件呢?我想实现的功能是每隔x秒执行一次某个函数。
5 个回答
2
如果不使用线程,定期调用一个函数通常没有太大意义。因为你的主线程会被阻塞,意味着它在等待时什么都做不了。
不过,如果你真的想这样做:
import time
for x in range(3):
print('Loop start')
time.sleep(2)
print('Calling some function...')
这就是你真正想要的吗?
4
你可以结合使用 signal.alarm
和一个信号处理器来处理 SIGALRM
,这样就可以每5秒重复执行这个函数。
import signal
def handler(sig, frame):
print ("I am done this time")
signal.alarm(5) #Schedule this to happen again.
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)
另外一个选择是使用 Python 自带的 sched 模块,不过我不太清楚它是否使用线程。
5
也许可以看看 sched 这个库?