2017-10-18 5 views
0

[Python 3.5.2, APScheduler 3.3.1]APScheduler ouvre plus de fils

APScheduler commence un certain nombre de fils et je voudrais savoir pourquoi.

C'est le code que je exécution (en PyCharm, où je peux aussi représenter graphiquement les fils):

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) 

Le graphique des fils est: threads_graph

Pourquoi APScheduler crée tant de fils quand on serait assez?

Le fil 7 est créé à 1,6 s. et sa tâche se termine à 2,1 sec. Une nouvelle tâche est exécutée à 2.6 sec: au lieu d'utiliser immédiatement Thread-7, Thread-8 est créé mais la tâche est exécutée dans Thread-7, laissant le thread-8 vide ... Y a-t-il une raison?

Le nombre de threads de planificateur est limité à 10.

Répondre

1

APScheduler utilise concurrent.futures.ThreadPoolExecutor de la bibliothèque standard qui est un peu paresseux à ce sujet. C'est pourquoi.

+0

Oui, vous avez raison. J'ai trouvé un problème à ce sujet ici: https://github.com/agronholm/apscheduler/issues/207 Merci –