Python 多处理更新全局变量

Python MultiProcessing Updating Global Variable

我遇到一个问题,我尝试使用多处理启动多个进程,并尝试让每个进程更新一个全局字典对象。

代码是:

import multiprocessing

jobs = []

master_dict = {}

def worker_function(list1, id):
    master_dict[str(id)] = {}

    for i in list1:
        #
        # using pymssql here to get a cursor of rows from a SELECT query
        #
        master_dict[str(id)][i] = []

        for row in cursor:
            master_dict[str(id)][i].append(row)

    return

def multi_function():
    for i in list2:
        my_proc = multiprocessing.Process(name='multi_process', target=worker_function, kwargs={'list1': session['something'], 'id': i})

        jobs.append(my_proc)
        my_proc.start()

    for job in jobs:
        job.join()
return master_dict{}

当我打印沿途追加的内容时,我确实看到数据正在添加到 master_dict,但是一旦它 returns,它就只是 {} .

这是多个进程试图更新同一个变量的问题吗?我知道对于多线程来说这是一个问题,为了线程安全。

任何建议都会非常有用!

谢谢

您不能像这样在进程之间共享状态。 multiprocessing 模块包含执行此操作的 number of different approaches