我遇到了一个问题,我试图使用多处理启动多个进程,并尝试让每个进程更新一个全局dict对象。在
代码是: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中,但是一旦它返回,它就是{}。在
多个进程试图更新同一个变量时是否存在此问题?我知道对于多线程,这是一个问题,线程安全。在
任何建议都会非常有用!在
谢谢