Python Language
Multiprocesamiento
Buscar..
Ejecutando dos procesos simples
Un ejemplo simple de usar múltiples procesos serían dos procesos (trabajadores) que se ejecutan por separado. En el siguiente ejemplo, se inician dos procesos:
-
countUp()
cuenta 1 arriba, cada segundo. -
countDown()
cuenta 1 abajo, cada segundo.
import multiprocessing
import time
from random import randint
def countUp():
i = 0
while i <= 3:
print('Up:\t{}'.format(i))
time.sleep(randint(1, 3)) # sleep 1, 2 or 3 seconds
i += 1
def countDown():
i = 3
while i >= 0:
print('Down:\t{}'.format(i))
time.sleep(randint(1, 3)) # sleep 1, 2 or 3 seconds
i -= 1
if __name__ == '__main__':
# Initiate the workers.
workerUp = multiprocessing.Process(target=countUp)
workerDown = multiprocessing.Process(target=countDown)
# Start the workers.
workerUp.start()
workerDown.start()
# Join the workers. This will block in the main (parent) process
# until the workers are complete.
workerUp.join()
workerDown.join()
La salida es la siguiente:
Up: 0
Down: 3
Up: 1
Up: 2
Down: 2
Up: 3
Down: 1
Down: 0
Uso de la piscina y el mapa
from multiprocessing import Pool
def cube(x):
return x ** 3
if __name__ == "__main__":
pool = Pool(5)
result = pool.map(cube, [0, 1, 2, 3])
Pool
es una clase que administra varios Workers
(procesos) detrás de escena y le permite al programador usar.
Pool(5)
crea un nuevo pool con 5 procesos, y pool.map
funciona igual que el mapa, pero usa varios procesos (la cantidad definida al crear el pool).
Se pueden obtener resultados similares utilizando map_async
, apply
y apply_async
que se pueden encontrar en la documentación .
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow