我遇到了一个问题,我尝试使用多处理启动多个进程,并尝试让每个进程更新一个全局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中,但是一旦它返回,它只是{}。
这是多个进程尝试更新同一个变量的问题吗?我知道多线程这是一个问题,为线程安全。
任何建议都会非常有用!
由于