【发布时间】:2014-08-09 06:52:55
【问题描述】:
我有一个带有嵌套 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 的多处理来做到这一点? (不知何故分成几块?)或者这对水罐来说是更好的工作吗?根据关于 SO 的建议,我花了几天时间尝试使用 Jug,但我的嵌套 for 循环中的迭代次数很容易进入数百万(甚至更多)非常快速的事务,因此作者建议不要这样做。
【问题讨论】:
-
您没有提供足够的信息:“某些标准”的依赖关系是什么?它是否取决于“vlad”之一?一世 ?两个都 ?全部 ?如果我们有这些信息,我们也许可以创建一个递归函数,聚合中间结果并使用“rest”递归调用
-
@alfasin 我提供了条件逻辑。我会研究你的建议。谢谢
标签: python multithreading for-loop multiprocessing itertools