¿Es posible utilizar multiprocesamiento? ¿Evento para implementar una barrera de sincronización para el conjunto de procesos?

¿Es posible utilizar multiprocesamiento? ¿Evento para implementar una barrera de sincronización para el conjunto de procesos? Estoy usando Python 2.7. Pero parece que el Evento no se comparte entre procesos. ¿Hay algún problema con mi código?

def test_func(event): event.wait() return datetime.datetime.now() def log_result(result): result_list.append(result) if __name__ == '__main__': pool_size=10 pool = multiprocessing.Pool(processes=pool_size) event = multiprocessing.Manager().Event() for _ in xrange(pool_size): pool.apply_async(test_func, args=(event,), callback=log_result) pool.close() pool.join() time.sleep(5) event.set() 

Tiene un locking de locking: pool.join () espera los procesos iniciados y todos los procesos esperan en event.wait (). Unirse a la piscina sedd:

unirse()

 Wait for the worker processes to exit 

Básicamente, debes mover “pool.join ()” después de “event.set ()” y todo debería estar bien.