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

独立Python3脚本之间的进程间通信,python,multiprocessing,Python,Multiprocessing,我们可以使用标准的multiprocessing.Queue类在独立的Python3脚本之间进行通信吗 bash% ./aaa.py & bash% ./bbb.py & 如果没有,是否有另一个类似于标准多处理模块的库,用于与独立脚本通信。请查看关于;与更高级别的更简单的API不同,这些API允许您通过地址建立连接并对配对的进程进行身份验证,这允许两个Python脚本在没有父/子关系的情况下进行协作。这是一个自我回答。下面是我的最小示例 aaa.py from multipro

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

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

如果没有,是否有另一个类似于标准多处理模块的库,用于与独立脚本通信。

请查看关于;与更高级别的更简单的API不同,这些API允许您通过地址建立连接并对配对的进程进行身份验证,这允许两个Python脚本在没有父/子关系的情况下进行协作。

这是一个自我回答。下面是我的最小示例

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.

我知道多处理连接模块。对不起,解释得不够。我正在寻找更高级别的更简单的API。@shiina:更简单的API不处理命名地址。我会查看
子流程
和/或
多处理
的源代码(高级内容都是Python的),了解它们的功能以及解决特定问题的正确方法。但是,我不知道multiprocessing.managers模块。你的回答引导我进入模块。谢谢。我选择了multiprocessing.managers模块,它的示例代码url是。很遗憾,您在没有发布解释的情况下发布了自我回答。不清楚什么是BaseManager,它是如何工作的,为什么有两个队列而没有一个?