Threadpool de Python
- Definición de grupo de subprocesos
-
Diferencias entre
multiprocessing.pool.ThreadPool
ymultiprocessing.Pool
-
multiprocessing.Pool
en Python -
multiprocessing.pool.Threadpool
en Python
Este tutorial mostrará la diferencia entre Pool
de multiprocessing
y ThreadPool
de multiprocessing.pool
Definición de grupo de subprocesos
Un grupo de subprocesos es un grupo de subprocesos inactivos previamente instanciados que están listos para recibir trabajo. La creación de un nuevo objeto de hilo para que cada tarea se ejecute de forma asincrónica es costosa. Con un grupo de subprocesos, agregaría la tarea a una cola de tareas y el grupo de subprocesos asigna un subproceso disponible para la tarea. El grupo de subprocesos ayuda a evitar crear o destruir más subprocesos de los que serían necesarios.
Diferencias entre multiprocessing.pool.ThreadPool
y multiprocessing.Pool
multiprocessing.pool.ThreadPool
se comporta de la misma manera que multiprocessing.Pool
. La diferencia es que multiprocessing.pool.Threadpool
usa subprocesos para ejecutar la lógica del trabajador mientras que multiprocessing.Pool
usa procesos de trabajo.
multiprocessing.Pool
en Python
El siguiente código generará 4 procesos diferentes, cada uno de los cuales ejecutará la función 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)
Producción :
Process Id 239
Process Id 240
Process Id 241
Process Id 242
[0, 1, 2, 3]
multiprocessing.pool.Threadpool
en Python
ThreadPool
generará 4 subprocesos que ejecutan la función sleepy()
en lugar de procesos de trabajo.
# 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)
Producción :
Process Id 217
Process Id 217
Process Id 217
Process Id 217
[0, 1, 2, 3]