bash% ./aaa.py &
bash% ./bbb.py &
gibi bağımsız Python3 yazıları arasında iletişim kurmak için standart multiprocessing.Queue sınıfını kullanabilir.
bash% ./aaa.py &
bash% ./bbb.py &
gibi bağımsız Python3 yazıları arasında iletişim kurmak için standart multiprocessing.Queue sınıfını kullanabilir.
"Listeners and Clients" in the multiprocessing
docs; Daha yüksek düzeyli daha basit API'lerden farklı olarak, bu API'ler, iki Python betiğinin bir ebeveyn/çocuk ilişkisi olmadan işbirliği yapmasını sağlayan eşleştirilen işlemi adrese bağlayarak ve eşleştirilen işlemi doğrulamanıza olanak tanır.
Çok işlemcili bağlantı modülünü biliyorum. Yeterince açıklayamadığım için üzgünüm. Daha yüksek seviyedeki daha basit API'ları arıyorum. – shiina
@shiina: Daha basit API'ler adlandırılmış adresleri işlemez. Ne yaptıklarını ve belirli bir problemi çözmenin uygun yolunu öğrenmek için 'subprocess' ve/veya 'multiprocessing 'kaynak koduna (yüksek seviyedeki şeyler Python'da her neyse) bakardım. – ShadowRanger
Ancak, multiprocessing.managers modülünü bilmiyordum. Cevabınız beni modüle yönlendirdi. Teşekkürler. – shiina
Bu bir kişisel cevaptır. Minimum örneğim aşağıda.
aaa.py
from multiprocessing.managers import BaseManager
import queue
queue_a = queue.Queue()
queue_b = queue.Queue()
BaseManager.register('queue_a', callable=lambda: queue_a)
BaseManager.register('queue_b', callable=lambda: queue_b)
m = BaseManager(address=('', 50000), authkey=b'qwerty')
m.start()
shared_queue_a = m.queue_a()
shared_queue_b = m.queue_b()
shared_queue_a.put("How are you?")
msg = shared_queue_b.get()
print("%s: %s" % (__file__, msg))
m.shutdown()
bbb.py
from multiprocessing.managers import BaseManager
BaseManager.register('queue_a')
BaseManager.register('queue_b')
m = BaseManager(address=('localhost', 50000), authkey=b'qwerty')
m.connect()
queue_a = m.queue_a()
queue_b = m.queue_b()
msg = queue_a.get()
print("%s: %s" % (__file__, msg))
queue_b.put("I'm fine.")
çalıştırın bu komut dosyalarını.
./aaa.py &; sleep 1; ./bbb.py
Baskılar
./bbb.py: How are you?
./aaa.py: I'm fine.
Ben, onun örnek kod url https://docs.python.org/3.5/library/multiprocessing.html#using-a-remote- multiprocessing.managers modülüdür seçti yönetici – shiina