我正在尝试在进程之间传递消息。我有一个从客户端到服务器的进程。我希望其他进程将信息传递给客户端,以将其传递给服务器。将服务器视为数据记录器。我正在使用concurrent.futures.ProcessPoolExecutor。这些进程在while True
中连续工作
任何关于如何连接进程的提示都值得赞赏
多谢各位
编辑:我找到了答案。所有的功劳都归谁发了下面的帖子here
import multiprocessing
qm = multiprocessing.Manager()
pqueue = qm.Queue()
Tags:
进程通常不能通过python的标准库相互通信。进程的内存空间由操作系统分配,通常不会重叠。父进程(如原始python进程)对子进程(如使用ProcessPoolExecutor创建的进程)的可见性有限,但不能在它们之间传递消息
你有几个选择
1)使用螺纹。如果您实际上不需要并行性(例如使用多核系统的所有核心),那么此选项可能会起作用。所有线程都在一个进程内运行,并具有共享的内存空间。因此,您可以从一个线程写入对象,然后从另一个线程读取。concurrent.futures.ThreadPoolExecutor将允许您执行此操作
2)使用底层操作系统。通常,当运行在同一系统上的两个进程需要通信时,它们通过端口进行通信。接收消息的进程将绑定到端口。然后,发送消息的进程将通过该端口建立套接字连接,并使用此连接进行通信。有关更多详细信息,请参阅https://docs.python.org/3.7/howto/sockets.html
3)使用rabbitMQ或reddis等消息代理。这些是促进过程之间通信的外部过程
相关问题 更多 >
编程相关推荐