gpt4 book ai didi

python 多处理示例 itertools 多个列表

转载 作者:行者123 更新时间:2023-11-30 23:20:52 24 4
gpt4 key购买 nike

我有一个非常简单的应用程序,带有嵌套的 for 循环,运行时间可能需要几分钟到几小时,具体取决于数据量。

我开始使用 python 中的多处理库。我尝试以最基本的形式实现它,即使我的代码运行,也没有性能提升。让我相信我的实现不正确和/或我的代码设计存在极大缺陷。

我的代码非常简单:

import csv
import multiprocessing

somedata1 = open('data1.csv', 'r')
SD_data = csv.reader(data1,delimiter=',')
data1 = []
**import lots of CSV data***

def crunchnumbers():
for i, vald1 in enumerate(data1):
for i, vald2 in enumerate(data2):
for i, vald3 in enumerate(data3):
for i, vald4 in enumerate(data3):
for i, vald5 in enumerate(data3):
sol = #add values
print d_solution

if __name__ == '__main__':
pool = multiprocessing.Pool(processes=4)
pool.apply(crunchnumbers)

如何使用 python 的多处理来做到这一点? (以某种方式分成 block ?)还是这对壶来说是更好的工作?基于 SO 的建议,我花了几天时间尝试使用 Jug,但是我的嵌套 for 循环中的迭代次数很容易达到数十百万(甚至更多)的非常快的事务,因此作者建议不要这样做。

最佳答案

我建议将 itertools.product 与 multiprocessing-map 一起使用:

import csv
import multiprocessing
from itertools import product

def crunchnumber(values):
if some criteria:
sol = values[0][2]+values[1][2]+values[2][2]....
return sol

def process(datas):
"takes data1, ..., datan as a list"
pool = multiprocessing.Pool(processes=4)
result = pool.map_async(crunchnumber, product(*datas))
print [a for a in result if a is not None]

关于python 多处理示例 itertools 多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25216040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com