2017-10-18 59 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 謝謝 –