如何在python进程之间实时共享对象和数据?

我正在尝试为实时应用程序,多处理和大型文件在Python中找到一种合理的方法.父进程产生2个或更多子进程.第一个孩子读取数据,保存在内存中,其他孩子以管道方式对其进行处理.数据应组织成一个对象,发送给以下过程,进行...

我正在尝试为实时应用程序,多处理和大型文件在Python中找到一种合理的方法.

父进程产生2个或更多子进程.第一个孩子读取数据,保存在内存中,其他孩子以管道方式对其进行处理.数据应组织成一个对象,发送给以下过程,进行处理,发送,处理等.

由于开销(序列化等),可用的方法(如Pipe,Queue,Managers)似乎不够用.

有适当的方法吗?

解决方法:

我已经使用Celery和Redis在高内存应用程序中进行实时多处理,但这实际上取决于您要完成的工作.

与内置的多处理工具(管道/队列)相比,我在Celery中发现的最大好处是:

>低开销.您直接调用函数,无需序列化数据.
>缩放.需要加强工作流程吗?只要增加更多的工人.
>透明度.易于检查任务/工人并发现瓶颈.

对于真正压缩性能的问题,ZMQ是我的选择.设置和微调工作还很多,但要尽可能安全地接近裸露的插座.

免责声明:这都是轶事.这实际上取决于您的特定需求.在您走任何道路之前,我都会用示例数据对不同的选项进行基准测试.

本文标题为:如何在python进程之间实时共享对象和数据?

基础教程推荐