Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Berkongsi dan Mengubah Suai Kamus Antara Pelbagai Proses dalam Python?

Bagaimana untuk Berkongsi dan Mengubah Suai Kamus Antara Pelbagai Proses dalam Python?

Susan Sarandon
Lepaskan: 2024-11-14 17:44:02
asal
775 orang telah melayarinya

How to Share and Modify a Dictionary Between Multiple Processes in Python?

Pemprosesan Berbilang: Perkongsian Kamus Antara Proses

Pertimbangkan senario di mana berbilang proses beroperasi pada baris gilir kongsi, Q dan memanipulasi kamus global , D. Yang menghairankan, mengakses D selepas menyertai Q mendedahkan kamus kosong, walaupun terdapat pengubahsuaian yang diperhatikan pada kanak-kanak proses.

Tingkah laku ini berpunca daripada isu penyegerakan. Setiap proses beroperasi pada ruang ingatannya sendiri, dan perubahan yang dibuat kepada D dalam proses kanak-kanak tidak ditunjukkan secara automatik dalam proses utama. Untuk menangani perkara ini, langkah penyegerakan adalah perlu.

Penyelesaian: Menggunakan Objek Pengurus

Pustaka standard Python menyediakan penyelesaian menggunakan objek Pengurus. Objek ini menawarkan akses disegerakkan kepada data yang dikongsi antara proses:

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

Dalam contoh ini, kaedah dict() objek Pengurus mencipta kamus kongsi, d, yang boleh diakses oleh semua proses. Perubahan yang dibuat kepada d dalam proses anak disebarkan kepada proses utama melalui memori kongsi yang diuruskan oleh objek Pengurus.

Output:

$ python mul.py
{1: '111', '2': 6}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Berkongsi dan Mengubah Suai Kamus Antara Pelbagai Proses dalam Python?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan