python-3.x - 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 周,也几乎没有接触到多进程的表面,所以我真的不知道我应该做什么。非常感谢这个问题的解决方案。谢谢。
解决方案
推荐阅读
- ruby - 如何安装 PostgreSQL:错误:无法构建 gem 原生扩展
- c# - MongoDb & C#:在大索引上使用带有排序的游标
- ios - Swift 看不到数据
- python - 在指定位置单击而不移动鼠标错误
- eclipse - Xtextformatting2 API - EList 的内部缩进
特征 - string - 从字符串值 Visual Basic 中提取单独的双精度值。网
- rust - 如何定义具有不同时区的 chrono::DateTime 向量?
- javascript - 如何将本地文件从 Flask 发送到 Reactjs
- azure - 如何使用在托管资源组中具有权限的身份部署托管应用程序?
- python-3.x - Python:从xml中的子属性获取父属性