首页 > 解决方案 > 如何在进程之间共享对象?

问题描述

我正在开发一个程序,它有 2-3 个不同的“进程”或“工作流程”,它们都需要一次执行(不一定是并行的,它们只需要同时运行)。这些进程独立运行和运行以执行不同但相关的任务,但它们也需要共享一些对象(列表和变量)。

我想知道实现这一点的最佳方法是什么?为了提供一些基本的背景信息和上下文,这是一个将短信平台与我们的 CMS 集成的程序。这 3 个模块是发送器、接收器和一个读取和排队新出站作业的模块,称为 jobHandler。

我让每个模块都能正常工作,但我的问题在于将它们捆绑在一起。我实现了多处理,但是当我意识到我必须在不同的模块和不同的进程之间共享对象时发现了麻烦,这根本行不通。

有没有更好的方法来做到这一点,我完全错过了?你将如何实现这样的事情?

这是python 3.6。

简化示例(所有模块都使用多处理启动),

作业处理程序:

import pyodbc

q=[]

def queueJobs():
    ~do stuff~
    x=new job
    q.append(x)

发件人:

from jobHandler import q

def send():
   ~do stuff~
    print(q)

q将始终显示为"[]"从发件人打印时。我意识到这是因为当模块都以多处理启动时,q它是空的。如何跨不同进程共享对象的当前状态?

标签: pythonpython-3.xmultiprocessing

解决方案


推荐阅读