python - Python多处理迭代列表
问题描述
我正在使用python 2.7.5(目前无法升级):)这是我的多处理代码,一切都在同一个python脚本中:
def get_data(self, data):
pool = Pool(processes=8)
data_to_add = list()
print("Gathering data")
for machine in data:
data_to_add.extend(pool.map(create_doc_struct, [machine]))
pool.close()
return data_to_add
这是 create_doc_struct 函数:
def create_doc_struct(_machine):
from multiprocessing import Pool
export_json = my_class.get_collection(my_class.export_collection).find({})
for exported_data in export_json:
if _machine["Hostname"] == exported_data["name"]:
d = {
"hostname": _machine["Hostname"],
"server": exported_data["Server"]
}
return d
当我运行脚本时,似乎产生了 8 个线程,但是当我使用一个线程或 8 个线程运行时,脚本运行时间是相同的。
我尝试添加更多 vCPU(当前为 16 个)和 RAM(64 GB),但完成运行仍需要相同的时间。
对我来说,多处理代码似乎不起作用或只有一个线程正在运行此功能。有时它在运行过程中似乎也变慢了。
我的代码中是否缺少某些内容?我该如何解决这个问题?
解决方案
推荐阅读
- r - 如何检查 id 是否在特定日期进入数据并保留到退出日期
- node.js - 如何自定义firebase DocumentData 接口?
- python-3.x - 如何允许用户在节点之间添加边?
- c++ - 创建玩家向量并向每个玩家添加信息
- java - 以编程方式创建布局时在 Camera2 API 中拉伸的预览
- arrays - Oracle 11 中的数组
- c# - 如何将 SQL Server 数据库与 Coded UI Test 结合使用?
- android - 有没有办法吸引下载应用但从不打开的用户?
- wordpress - 高级自定义字段灯箱似乎显示附加到字段的所有图像,而不是附加到帖子的图像
- nightwatch.js - 如果 .assert.containsText 在 nightwatch 中失败,Chrome 浏览器会崩溃