Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah perpustakaan berbilang pemprosesan Python dapat memudahkan Komunikasi Antara Proses?
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.
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.
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.
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.
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!