独立Python3脚本之间的进程间通信

时间:2016-04-06 02:40:28

标签: python multiprocessing

我们可以使用标准的multiprocessing.Queue类在独立的Python3脚本之间进行通信,例如

bash% ./aaa.py &
bash% ./bbb.py &

如果不是,是否有另一个库,如标准多处理模块,用于与独立脚本进行通信。

2 个答案:

答案 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.