Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah saya boleh memastikan ketekalan data dalam kamus global yang diakses oleh pelbagai proses kanak-kanak?

Bagaimanakah saya boleh memastikan ketekalan data dalam kamus global yang diakses oleh pelbagai proses kanak-kanak?

DDD
Lepaskan: 2024-12-15 01:26:11
asal
341 orang telah melayarinya

How can I ensure data consistency in a global dictionary accessed by multiple child processes?

Pemprosesan Berbilang: Menangani Penyegerakan dan Perkongsian Data dalam Kamus Global

Dalam persekitaran berbilang benang, pengendalian akses serentak data dan mengekalkan penyegerakan menjadi penting. Pertimbangkan program dengan berbilang proses kanak-kanak yang berfungsi pada baris gilir dan memanipulasi kamus global, D.

Apabila proses kanak-kanak mengubah suai D, kemas kini ini boleh dilihat dalam proses tersebut. Walau bagaimanapun, selepas proses utama menyertai baris gilir, pencetakan D dalam proses utama mendedahkan kamus kosong. Ini disebabkan oleh isu penyegerakan dalam mengakses sumber yang dikongsi, D.

Untuk menyelesaikannya, objek Pengurus boleh digunakan. Kelas Pengurus dalam pelbagai pemprosesan membolehkan penciptaan dan pengurusan objek kongsi, termasuk kamus. Kod python terlaras berikut menunjukkan penggunaannya:

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)
Salin selepas log masuk

Dengan menggunakan objek Pengurus, kamus kongsi, D, disimpan dalam lokasi memori kongsi yang boleh diakses oleh semua proses. Ini memastikan penyegerakan dan menghalang keadaan perlumbaan dalam mengakses kamus, walaupun merentasi pelbagai proses.

Menjalankan kod yang diubah suai ini harus menghasilkan output berikut:

{1: '111', '2': 6}
Salin selepas log masuk

menunjukkan bahawa pengubahsuaian yang dibuat oleh proses kanak-kanak dalam kamus kongsi kelihatan dan berterusan walaupun selepas menyertai proses.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memastikan ketekalan data dalam kamus global yang diakses oleh pelbagai proses kanak-kanak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan