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!