我在python2.7中使用多处理模块,发现它有一些问题,这是我目前无法解决的问题,比如如何解决它。在
我使用的示例代码是以下内容:-在
from multiprocessing import Pool
def func_eachcol(col_index):
global list_of_lists
for row in xrange(list_of_lists):
list_of_lists[row][col_index] = 'Update Value'
class C1:
def func_callmultiprocess(self):
global list_of_lists
col_len = len(cols)
pool = Pool(col_len)
for col in xrange(col_len):
pool.apply_async(func_eachcol, args=(col))
pool.close()
pool.join()
print list_of_lists
基本上,我所做的,是在每一列上打开一个新的进程,迭代每一行的列表,然后在该行上更新,就在这个进程中。在
我在这里看到的问题是,在多处理结束后,我看不到更新的列表,事实上它是旧的列表。在
但是当我看到,在多进程函数(func_eachcol)中,我可以看到这个索引(行、列)中的值正在更新。在
请为这个问题提供一些补救办法。在
增加了一个代码,简单的我想实现的
^{pr2}$基本上我想要的输出是[-1,-2,-3]。怎么可能呢。?在
全局变量在多个进程之间共享;您只在子进程中操作全局列表,父进程不会看到更改。在
查看documentation on sharing state中有关如何在进程之间传递信息的选项。您可能希望
Manager
实例共享您的列表。在相关问题 更多 >
编程相关推荐