Skip to main content
 首页 » 编程设计

python之APScheduler 开启更多线程

2024年10月01日33jillzhang

[Python 3.5.2, APScheduler 3.3.1]

APScheduler 启动了一些线程,我想知道为什么。

这是我正在执行的代码(在 PyCharm 中,我还可以在其中绘制线程图):

from apscheduler.schedulers.background import BackgroundScheduler 
import time 
 
def process_to_execute(): 
    time.sleep(0.5) 
 
scheduler = BackgroundScheduler() 
scheduler.add_job(process_to_execute, 'cron', second="*/1") 
scheduler.start() 
 
while True: 
    time.sleep(1) 

线程图是:

为什么 APScheduler 在一个线程就足够的情况下创建这么多线程?

Thread-7 创建于 1.6 秒。它的任务在 2.1 秒时完成。 一个新任务在 2.6 秒时执行:不是立即使用 Thread-7,而是创建了 Thread-8,但任务在 Thread-7 中执行,而 thread-8 为空......这有什么原因吗?

调度器的线程数限制为10。

请您参考如下方法:

APScheduler 使用标准库的 concurrent.futures.ThreadPoolExecutor 这有点懒惰。这就是为什么。