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
DDDasal
2024-12-15 01:26:11343semak imbas

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)

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}

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!

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