Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah cara saya mengemas kini pembolehubah global daripada proses anak dalam berbilang pemprosesan dan memastikan ia boleh diakses oleh proses induk?

Bagaimanakah cara saya mengemas kini pembolehubah global daripada proses anak dalam berbilang pemprosesan dan memastikan ia boleh diakses oleh proses induk?

Susan Sarandon
Susan Sarandonasal
2024-11-06 15:08:02408semak imbas

How do I update global variables from child processes in multiprocessing and ensure they are accessible by the parent process?

Pemprosesan Kemas Kini Pembolehubah Global Berbilang Tidak Dikembalikan kepada Induk

Apabila menggunakan multipemprosesan untuk mewujudkan proses sekunder, contoh Python yang berbeza dicipta dengan sendiri negara global. Keadaan global ini diasingkan, menjadikan sebarang pengubahsuaian yang dibuat kepada pembolehubah global oleh proses anak tidak dapat dilihat oleh proses induk.

Selain itu, majoriti abstraksi berbilang pemprosesan memanfaatkan jeruk untuk memindahkan data. Semua data yang disampaikan melalui proksi mestilah boleh dijeruk, termasuk semua objek yang disediakan oleh Pengurus. Bahagian Pengurus menekankan bahawa proses lain boleh mengakses objek kongsi menggunakan proksi.

Sekatan serupa dikenakan pada Baris Gilir, walaupun dokumentasi mengetepikan maklumat ini. Ujian pantas mengesahkan bahawa semua data dalam Baris Gilir juga mesti boleh dijeruk.

Jika penjerukan data anda masih tidak dapat dilaksanakan, pertimbangkan untuk menyimpannya sebagai objek ctype dan menghantar rujukan memori kepada proses anak. Pendekatan ini agak berisiko dan harus dikhaskan untuk situasi di mana pilihan lain sudah habis.

Dalam kes anda, memahami kerumitan LORR adalah penting. Jika ia adalah kelas Python, subkelas daripadanya dan mentakrifkan kaedah setstate dan getstate boleh memudahkan penjerukan.

Sebagai alternatif, mengekstrak data yang diperlukan daripada contoh LORR dan menghantarnya melalui rentetan mudah mungkin memadai. Pertimbangkan untuk menggunakan Baris Gilir untuk menghantar mesej antara proses utama dan proses anak untuk menggunakan kaedah objek secara langsung, seperti yang digambarkan dalam skema di atas.

Atas ialah kandungan terperinci Bagaimanakah cara saya mengemas kini pembolehubah global daripada proses anak dalam berbilang pemprosesan dan memastikan ia boleh diakses oleh proses induk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn