Condivisione di una coda di risultati tra diversi processi

| | | | | | | | | | | | | |

La documentazione per il modulo multiprocessing mostra come passare una coda a un processo avviato con multiprocessing.Process. Ma come posso condividere una coda con processi di lavoro asincroni avviati con apply_async? Non ho bisogno di unioni dinamiche o altro, solo un modo per i lavoratori di riportare (ripetutamente) i loro risultati alla base.

import multiprocessing def worker(name, que): que. put("%d è terminato" % name) if __name__ == "__main__": pool = multiprocessing.Pool(processes=3) q = multiprocessing.Queue() worker = pool.apply_async(worker, (33, q)) 

Non riesce con: RuntimeError: gli oggetti della coda devono essere condivisi solo tra processi tramite ereditarietà. Capisco cosa significa e capisco il consiglio di ereditare piuttosto che richiedono il decapaggio/rimozione (e tutte le restrizioni speciali di Windows). Ma come faccio a passare la coda in un modo che funzioni? Non riesco a trovare un esempio e ho provato diverse alternative che non hanno funzionato in vari modi. Aiutatemi per favore?