La documentación del módulo multiprocessing
muestra cómo pasar una cola a un proceso iniciado con multiprocessing.Process
. Pero, ¿cómo puedo compartir una cola con procesos de trabajo asíncronos iniciados con apply_async
? No necesito unión dinámica ni nada más, solo una forma para que los trabajadores (repetidamente) informen sus resultados a la base.
import multiprocessing def worker(name, que): que. put("%d terminado" % nombre) if __name__ == "__main__": pool = multiprocesamiento.Pool(procesos=3) q = multiprocesamiento.Cola() trabajadores = pool.apply_async(trabajador, (33, q))
Esto falla con: RuntimeError: los objetos de la cola solo deben compartirse entre procesos a través de la herencia
. Entiendo lo que esto significa, y entiendo el consejo de heredar en lugar de requieren decapado/desdecapado (y todas las restricciones especiales de Windows). Pero, ¿cómo hago paso la cola de una manera que funcione? No puedo encontrar un ejemplo, y probé varias alternativas que fallaron de varias maneras. ¿Ayuda, por favor?