Python 多进程与无关进程
我有很多进程是独立启动的,不是从父进程到子进程的那种关系。这些进程需要向特定的进程发送消息。接收消息的进程地址(进程ID)可以存储在数据库里,但这些进程之间不能共享任何内存中的变量。
我找不到使用Python的multiprocess包来实现这个功能的方法,所以现在在考虑基于套接字的服务器。不过,这个问题让我很好奇,是否可以通过多进程的方式来实现这种架构——这样做的好处是可以轻松传递可序列化的对象。
1 个回答
2
这些进程需要给特定的进程发送消息。接收进程的地址(pid)可以存储在数据库里,但进程之间不能共享任何公共的内存变量。
数据库?为什么要用数据库?大家通常用文件来处理这个,因为文件便宜、容易获取,而且你只需要存一个整数值。
而且,既然你要用文件,那你还有更多有趣的选择。
每个进程把消息写入一个命名管道。接收进程从这个命名管道中取出请求。
每个进程把消息写入一个文件。用一个简单的锁来确保一次只有一个进程可以访问这个文件,这样可以保证消息的顺序。接收进程从这个文件中读取消息。
每个进程使用HTTP向接收进程发起RESTful请求。接收进程使用一个简化的HTTP服务器框架来处理请求。
每个进程使用消息队列来排队消息。接收进程从队列中取出消息。这个队列就是一个文件。
等等,还有更多选择。但这些选择开始变得和操作系统有关了。