Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah perpustakaan berbilang pemprosesan Python dapat memudahkan Komunikasi Antara Proses?

Bagaimanakah perpustakaan berbilang pemprosesan Python dapat memudahkan Komunikasi Antara Proses?

DDD
DDDasal
2024-10-29 11:18:021054semak imbas

How can Python's multiprocessing library simplify Interprocess Communication?

Komunikasi Antara Proses dalam Python

Komunikasi Antara Proses (IPC) membolehkan komunikasi antara berbilang proses Python yang sedang berjalan. Meneroka pelbagai pilihan, seperti menggunakan paip bernama, perkhidmatan dbus dan soket, boleh menjadi mencabar. Artikel ini membentangkan penyelesaian peringkat lebih tinggi dan mantap menggunakan perpustakaan berbilang pemprosesan.

Menggunakan Pustaka Berbilang pemprosesan

Perpustakaan berbilang pemprosesan menawarkan cara yang mudah dan cekap untuk melaksanakan IPC dalam Python. Ia menyediakan pendengar dan pelanggan yang merangkum soket dan membolehkan anda menukar objek Python secara langsung.

Mendengar Mesej

Untuk mencipta proses mendengar, gunakan kelas Pendengar:

<code class="python">from multiprocessing.connection import Listener

address = ('localhost', 6000)
listener = Listener(address, authkey=b'secret password')
conn = listener.accept()
print('connection accepted from', listener.last_accepted)</code>

Pendengar menunggu pada alamat IP dan port yang ditentukan untuk sambungan masuk. Setelah sambungan diwujudkan, objek Sambungan (sambungan) dikembalikan.

Menghantar Mesej

Untuk menghantar mesej sebagai objek Python, gunakan kelas Klien:

<code class="python">from multiprocessing.connection import Client

address = ('localhost', 6000)
conn = Client(address, authkey=b'secret password')
conn.send('close')
conn.close()</code>

Kelas Pelanggan bersambung ke alamat yang ditentukan dan boleh menghantar objek sewenang-wenangnya ke proses mendengar.

Contoh Pelaksanaan

Pertimbangkan kes penggunaan mudah di mana satu proses (listener.py) mendengar mesej dan yang lain (client.py) menghantar mesej.

pendengar.py:

<code class="python">from multiprocessing.connection import Listener

listener = Listener(('localhost', 6000), authkey=b'secret password')
conn = listener.accept()

message = conn.recv()
if message == 'close':
    conn.close()
    listener.close()
    exit(0)
else:
    conn.close()
    listener.close()
    exit(1)</code>

client.py:

<code class="python">from multiprocessing.connection import Client

conn = Client(('localhost', 6000), authkey=b'secret password')
conn.send('close')
conn.close()</code>

Apabila anda menjalankan listener.py dan kemudian client.py, proses pendengar akan menerima mesej dan keluar dengan kod pulangan 0, yang menunjukkan kejayaan. Jika mesej tidak sah dihantar, pendengar akan keluar dengan kod pulangan bukan sifar, menunjukkan kegagalan.

Contoh ini menunjukkan kemudahan dan fleksibiliti menggunakan perpustakaan berbilang pemprosesan untuk komunikasi antara proses dalam Python. Ia menyediakan abstraksi peringkat lebih tinggi pada soket, membolehkan anda menghantar dan menerima objek Python dengan lancar antara proses.

Atas ialah kandungan terperinci Bagaimanakah perpustakaan berbilang pemprosesan Python dapat memudahkan Komunikasi Antara Proses?. 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