如何使用concurrent.futures.ProcessPoolExecutor在进程之间传递消息/信息

2024-04-26 20:23:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在进程之间传递消息。我有一个从客户端到服务器的进程。我希望其他进程将信息传递给客户端,以将其传递给服务器。将服务器视为数据记录器。我正在使用concurrent.futures.ProcessPoolExecutor。这些进程在while True中连续工作

任何关于如何连接进程的提示都值得赞赏

多谢各位

编辑:我找到了答案。所有的功劳都归谁发了下面的帖子here

import multiprocessing
qm = multiprocessing.Manager()
pqueue = qm.Queue()

Tags: 数据服务器信息true消息编辑客户端进程
1条回答
网友
1楼 · 发布于 2024-04-26 20:23:41

进程通常不能通过python的标准库相互通信。进程的内存空间由操作系统分配,通常不会重叠。父进程(如原始python进程)对子进程(如使用ProcessPoolExecutor创建的进程)的可见性有限,但不能在它们之间传递消息

你有几个选择

1)使用螺纹。如果您实际上不需要并行性(例如使用多核系统的所有核心),那么此选项可能会起作用。所有线程都在一个进程内运行,并具有共享的内存空间。因此,您可以从一个线程写入对象,然后从另一个线程读取。concurrent.futures.ThreadPoolExecutor将允许您执行此操作

2)使用底层操作系统。通常,当运行在同一系统上的两个进程需要通信时,它们通过端口进行通信。接收消息的进程将绑定到端口。然后,发送消息的进程将通过该端口建立套接字连接,并使用此连接进行通信。有关更多详细信息,请参阅https://docs.python.org/3.7/howto/sockets.html

3)使用rabbitMQ或reddis等消息代理。这些是促进过程之间通信的外部过程

相关问题 更多 >