Python Threadpool
- Définition du pool de threads
-
Différences entre
multiprocessing.pool.ThreadPool
etmultiprocessing.Pool
-
multiprocessing.Pool
en Python -
multiprocessing.pool.Threadpool
en Python
Ce tutoriel montrera la différence entre Pool
de multiprocessing
et ThreadPool
de multiprocessing.pool
Définition du pool de threads
Un pool de threads est un groupe de threads inactifs pré-instanciés qui sont prêts à recevoir du travail. La création d’un nouvel objet thread pour chaque tâche à exécuter de manière asynchrone coûte cher. Avec un pool de threads, vous ajouteriez la tâche à une file d’attente de tâches, et le pool de threads attribue un thread disponible pour la tâche. Le pool de threads permet d’éviter de créer ou de détruire plus de threads que nécessaire.
Différences entre multiprocessing.pool.ThreadPool
et multiprocessing.Pool
multiprocessing.pool.ThreadPool
se comporte de la même manière que multiprocessing.Pool
. La différence est que multiprocessing.pool.Threadpool
utilise des threads pour exécuter la logique du travailleur tandis que multiprocessing.Pool
utilise des processus de travail.
multiprocessing.Pool
en Python
Le code ci-dessous générera 4 processus différents qui exécuteront chacun la fonction sleepy()
.
# python 3.x
from multiprocessing import Pool
import os
import time
def sleepy(x):
print("Process Id", os.getpid())
time.sleep(x)
return x
if __name__ == "__main__":
p = Pool(5)
pool_output = p.map(sleepy, range(4))
print(pool_output)
Production:
Process Id 239
Process Id 240
Process Id 241
Process Id 242
[0, 1, 2, 3]
multiprocessing.pool.Threadpool
en Python
ThreadPool
générera 4 threads qui exécuteront la fonction sleepy()
au lieu des processus de travail.
# python 3.x
from multiprocessing.pool import ThreadPool
import os
import time
def sleepy(x):
print("Process Id", os.getpid())
time.sleep(x)
return x
if __name__ == "__main__":
p = ThreadPool(5)
pool_output = p.map(sleepy, range(4))
print(pool_output)
Production:
Process Id 217
Process Id 217
Process Id 217
Process Id 217
[0, 1, 2, 3]