首页 > 解决方案 > Python Multiprocess在函数中找不到字典和列表

问题描述

我正在使用 map() 为名为 rank_position 的列表(我从 csv 文件中提取)中的每个项目执行一个函数。功能如下:

def new_rank_Position(num):
    a = dict_Position[num]
    b = list2.index(num)
    avg_rank = (2 * list_rank[b] + a - 1)/2
    return avg_rank

代码运行得很好,但由于原始列表(连同上面函数中的 list2、list_rank)有大约 30 万个项目,执行需要几个小时,所以我决定使用多处理的 Pool 类来加速它,像这样:

if __name__ == '__main__':
    #some code that creates dict_Position, list2 and list_rank
    with Pool(5) as p:
        avg_rank_position = list(p.map(new_rank_Position, rank_position))

但这一次,当我尝试运行它时,程序在函数中找不到我的 dict_Position、list2 和 list_rank。是因为当我在“if name == ' main ':”下创建 dict_Position 时,dict_Position 被视为本地字典,而多进程的池工作人员正在寻找全局字典?我无法事先声明 dict_Position,因为它需要一些用户的输入。

我才学 Python 2 周,也几乎没有接触到多进程的表面,所以我真的不知道我应该做什么。非常感谢这个问题的解决方案。谢谢。

标签: python-3.xfunctionpython-multiprocessing

解决方案


推荐阅读