Dokumentacja modułu multiprocessing
pokazuje, jak przekazać kolejkę do procesu rozpoczętego za pomocą multiprocessing.Process
. Ale jak mogę udostępnić kolejkę asynchronicznym procesom roboczym uruchomionym z apply_async
? Nie potrzebuję dynamicznego łączenia ani niczego innego, wystarczy sposób, aby pracownicy (wielokrotnie) zgłaszali swoje wyniki z powrotem do bazy.
import multiprocessing def worker(name, que): que. put("%d jest gotowe" % name) if __name__ == "__main__": pool = multiprocessing.Pool(processes=3) q = multiprocessing.Queue() worker = pool.apply_async(worker, (33, q))
To nie działa z: RuntimeError: obiekty kolejki powinny być udostępniane między procesami tylko poprzez dziedziczenie
.Rozumiem, co to oznacza, i rozumiem porady dotyczące dziedziczenia, a nie wymagają marynowania/odtrawiania (i wszystkich specjalnych ograniczeń Windows). Ale jak zrobić przekazać kolejkę w sposób, który działa? Nie mogę znaleźć przykładu i wypróbowałem kilka alternatyw, które się nie powiodły na różne sposoby. Proszę o pomoc?