gpt4 book ai didi

python - Python中的进程间通信

转载 作者:IT老高 更新时间:2023-10-28 20:35:52 25 4
gpt4 key购买 nike

在两个独立的 Python 运行时之间进行通信的好方法是什么?我试过的东西:

  • 在命名管道上读/写,例如os.mkfifo (感觉很老套)
  • dbus服务(在桌面上工作,但对于 headless 服务来说太重了)
  • sockets(似乎太低级了;肯定有更高级别的模块可以使用?)

我的基本要求是能够像守护进程一样运行python listen.py,能够接收来自python client.py的消息。客户端应该只向现有进程发送一条消息并终止,返回码 0 表示成功,非零表示失败(即需要双向通信。)

最佳答案

multiprocessing library提供listeners and clients包装套接字并允许您传递任意 python 对象。

你的服务器可以监听接收 python 对象:

from multiprocessing.connection import Listener

address = ('localhost', 6000) # family is deduced to be 'AF_INET'
listener = Listener(address, authkey=b'secret password')
conn = listener.accept()
print 'connection accepted from', listener.last_accepted
while True:
msg = conn.recv()
# do something with msg
if msg == 'close':
conn.close()
break
listener.close()

您的客户端可以将命令作为对象发送:

from multiprocessing.connection import Client

address = ('localhost', 6000)
conn = Client(address, authkey=b'secret password')
conn.send('close')
# can also send arbitrary objects:
# conn.send(['a', 2.5, None, int, sum])
conn.close()

关于python - Python中的进程间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6920858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com