J'essaye d'implémenter un ThreadPool + Scheduler dans Python 2.7 avec le module Threading. Mon pool contient des threads qui sont alloués à l'avant, et mon planificateur gère le thread qui doit effectuer la tâche. J'ai des threads qui exécutent un processus système et attendent le résultat. Ces appels système peuvent prendre beaucoup de temps et j'espérais pouvoir réutiliser le thread pendant l'exécution de la tâche.Programmation de threads Python
Exemple:
- ThreadPool a 8 fils
- 8 tâches sont disponibles dans tous ensemble
- tâche 9 vient après un petit retard
- Tâche 1 prend 1024 ans (Peut-être qu'il pourrait utiliser certains optimisation).
- Tâches 2-8 prendre 1 an.
- La tâche 9 arrive, et cela ne prend que 1 seconde.
- La tâche 9 ne peut pas être exécutée car tous les threads sont utilisés.
Tâche 1 a un code similaire à ce
build_process = subprocess.Popen(build_command, shell=False)
build_process.wait()
est-il de toute façon de saisir le fil de Task1 alors qu'il attend, et faire Tâche 9? Puis, lorsque la tâche 9 se termine, revenez à la tâche 1 (en attendant que le processus se termine?) Python a-t-il déjà implémenté quelque chose comme cela?
Merci. Ce n'est pas un événement possible dans les nouvelles versions de Python? – Taztingo
@Taztingo: Malheureusement non. Une fois qu'un thread est démarré, la seule façon de manipuler ce thread est de l'intérieur du thread lui-même, auquel cas vous pouvez aussi avoir un dixième thread. –