2017-10-18 175 views
0

[Python的3.5.2,3.3.1 APScheduler]APScheduler打开多个线程

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) 

螺纹图为: threads_graph

为什么APScheduler创造这么多线程当一个人就够了?

线程7在1.6秒创建。其任务在2.1秒结束。 一个新的任务在2.6秒执行:不是立即使用线程7,而是创建线程8,但是任务在线程7中执行,而线程8空着......这是有原因的吗?

调度器的线程的数目限制在10。

回答

1

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

+0

是的,你是对的。我在这里发现了一个问题:https://github.com/agronholm/apscheduler/issues/207 谢谢 –