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?