我们可以使用标准的multiprocessing.Queue类在独立的Python3脚本之间进行通信,例如
bash% ./aaa.py &
bash% ./bbb.py &
如果不是,是否有另一个库,如标准多处理模块,用于与独立脚本进行通信。
答案 0 :(得分:1)
查看"Listeners and Clients" in the multiprocessing
docs上的部分;与更高级别的更简单的API不同,这些API允许您按地址建立连接并验证配对的进程,这允许两个Python脚本在没有父/子关系的情况下进行协作。
答案 1 :(得分:1)
这是一个自我回答。我的最小例子如下。
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.")
运行这些脚本。
./aaa.py &; sleep 1; ./bbb.py
打印
./bbb.py: How are you?
./aaa.py: I'm fine.