Apabila menggunakan berbilang pemprosesan, persoalan timbul jika data baca sahaja dikongsi disalin ke proses yang berbeza. Jika ya, bagaimanakah penyalinan ini boleh dihalang atau digalakkan?
Coretan kod yang disediakan, yang menggunakan tatasusunan global sebagai parameter lalai dalam fungsi yang dilaksanakan oleh berbilang proses, menimbulkan kebimbangan tentang pertindihan ingatan. Untuk menghalang proses individu daripada mendapatkan salinan data yang berasingan, pertimbangkan untuk menggunakan memori yang dikongsi.
Pemprosesan Berbilang dan Numpy boleh digabungkan untuk berkongsi data dengan cekap:
<code class="python">import multiprocessing import ctypes import numpy as np shared_array_base = multiprocessing.Array(ctypes.c_double, 10*10) shared_array = np.ctypeslib.as_array(shared_array_base.get_obj()) shared_array = shared_array.reshape(10, 10)</code>
Dalam fungsi yang dilaksanakan oleh setiap proses, perubahan yang dibuat pada tatasusunan yang dikongsi dapat dilihat oleh semua:
<code class="python">def my_func(i, def_param=shared_array): shared_array[i,:] = i</code>
Yang sesuai mekanisme untuk isu ini bergantung pada keperluan khusus dan corak capaian aplikasi. Memori dikongsi menawarkan pendekatan yang berkesan untuk mencegah pertindihan data dalam konteks ini, memastikan akses dikongsi antara berbilang proses.
Atas ialah kandungan terperinci Patutkah Data Dikongsi Baca Sahaja Disalin dalam Persekitaran Berbilang Pemprosesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!