Cara Berkongsi Kamus Antara Pelbagai Proses Menggunakan Multiprocessing
Apabila mencipta berbilang proses yang beroperasi pada baris gilir dikongsi dan menggunakan kamus global untuk storan hasil, adalah penting untuk menangani isu penyegerakan untuk memastikan manipulasi data yang tepat.
Satu pendekatan untuk menyegerakkan akses kepada kamus kongsi ialah menggunakan objek Pengurus. Pengurus menyediakan mekanisme untuk mencipta dan mengurus objek kongsi yang boleh diakses oleh berbilang proses.
Dalam senario khusus ini, anda boleh memasukkan objek Pengurus ke dalam kod anda seperti berikut:
from multiprocessing import Process, Manager def f(d): d[1] += '1' d['2'] += 2 if __name__ == '__main__': manager = Manager() d = manager.dict() d[1] = '1' d['2'] = 2 p1 = Process(target=f, args=(d,)) p2 = Process(target=f, args=(d,)) p1.start() p2.start() p1.join() p2.join() print(d)
Kaedah Manager.dict() mencipta kamus kongsi yang boleh diakses oleh sebarang proses. Dengan menyerahkan kamus ini sebagai hujah kepada setiap proses, anda membenarkan mereka memanipulasi data secara serentak.
Setelah menyertai proses, proses utama boleh mencetak kandungan kamus kongsi, yang kini akan mencerminkan hasil terkumpul oleh semua proses kanak-kanak.
Pendekatan ini memastikan semua proses mempunyai akses kepada kamus yang sama dan pengubahsuaian yang dibuat oleh satu proses dapat dilihat oleh orang lain, menyelesaikan masalah isu penyegerakan.
Atas ialah kandungan terperinci Bagaimana untuk Berkongsi Kamus Antara Pelbagai Proses Menggunakan Multiprocessing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!