python2.7中的多处理模块导致一些问题

2024-09-30 03:22:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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]。怎么可能呢。?在


Tags: of代码列表indexlen进程defcol
1条回答
网友
1楼 · 发布于 2024-09-30 03:22:42

全局变量在多个进程之间共享;您只在子进程中操作全局列表,父进程不会看到更改。在

查看documentation on sharing state中有关如何在进程之间传递信息的选项。您可能希望Manager实例共享您的列表。在

相关问题 更多 >

    热门问题