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
Lepaskan: 2024-10-29 11:18:02
asal
1066 orang telah melayarinya

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

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

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

client.py:

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

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

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!

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