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。
我遇到一个问题,我尝试使用多处理启动多个进程,并尝试让每个进程更新一个全局字典对象。
代码是:
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。