Dalam berbilang pemprosesan, berkongsi baris gilir antara proses ibu bapa dan anak adalah penting untuk komunikasi dan perolehan hasil. Walau bagaimanapun, menggunakan apply_async untuk memulakan proses pekerja tak segerak memberikan cabaran dalam berkongsi baris gilir.
Untuk mengatasi ralat "Objek giliran hanya boleh dikongsi antara proses melalui warisan", kami boleh menggunakan multiprocessing.Manager. Kelas pengurus ini membolehkan penciptaan dan pengurusan sumber yang dikongsi, termasuk baris gilir.
Dengan menyertakan penciptaan baris gilir kami dalam konteks multiprocessing.Manager(), kami boleh menjadikannya boleh diakses oleh semua pekerja. Beginilah cara untuk mengubah suai kod:
<code class="python">if __name__ == '__main__': pool = multiprocessing.Pool(processes=3) m = multiprocessing.Manager() q = m.Queue() workers = pool.apply_async(worker, (33, q))</code>
Kini, setiap pekerja boleh berinteraksi dengan objek q kongsi dan melaporkan hasil kembali kepada proses asas. Pendekatan ini membolehkan komunikasi hasil yang cekap dan boleh dipercayai sambil mengekalkan sifat tak segerak bagi apply_async.
Atas ialah kandungan terperinci Bagaimana untuk Berkongsi Barisan Hasil Antara Pelbagai Proses Menggunakan multiprocessing.Manager?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!