El evento de multiprocesamiento no funciona
Escribí el siguiente código en Python 3 usando el módulo de multiprocesamiento. Es más un script de prueba para ver cómo usarEvent
. Sin embargo, no está funcionando.
import multiprocessing, time
from multiprocessing import Process, Event
event = Event()
def f(n):
if n == 1:
print("starting")
event.wait()
print("Done!")
if n == 2:
time.sleep(3)
event.set()
print("setting")
if __name__ == "__main__":
p1 = Process(target = f, args = (1,))
p2 = Process(target = f, args = (2,))
p1.start()
p2.start()
time.sleep(1000)
Sin embargo, cuando ejecuto esto solo obtengo el resultado:
starting
setting
Quiero obtener la salida:
starting
setting
Done!
Pero por alguna razón elp1
El proceso no avanza con su código después de que event.set () ha sido invocado porp2
proceso.
¿Alguna idea de por qué está sucediendo esto?