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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta