如何在Python中无线程调度事件?

6 投票
5 回答
2344 浏览
提问于 2025-04-16 05:48

在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 这个库?

撰写回答