Dokumentasi untuk multiprocessing
modul menunjukkan cara meneruskan antrian ke proses yang dimulai multiprocessing.Process
. Tapi bagaimana saya bisa berbagi antrian dengan proses pekerja asynchronous yang dimulai apply_async
? Saya tidak perlu bergabung dinamis atau apa pun, hanya cara bagi pekerja untuk (berulang kali) melaporkan hasil mereka kembali ke pangkalan.
import multiprocessing
def worker(name, que):
que.put("%d is done" % name)
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=3)
q = multiprocessing.Queue()
workers = pool.apply_async(worker, (33, q))
Ini gagal dengan:
RuntimeError: Queue objects should only be shared between processes through inheritance
. Saya mengerti apa artinya ini, dan saya memahami saran untuk mewarisi daripada memerlukan pengawetan / pembongkaran (dan semua batasan khusus Windows). Tapi bagaimana cara saya lulus antrian dengan cara yang bekerja? Saya tidak dapat menemukan contoh, dan saya telah mencoba beberapa alternatif yang gagal dalam berbagai cara. Tolonglah?