![](/img/trans.png)
[英]How to use multiprocessing in Python on for loop to generate nested dictionary?
[英]How to use multiprocessing for multiple nested for loop in Python?
我有一个 class 有一堆函数来检查一个巨大的 dataframe ~33gb 的数据。 变量中的每个值都针对 dataframe(比如说 D 列)中的一列运行,然后将其附加到 dataframe 本身以供其他迭代计算该值。
无论如何, i 是针对 df.D 运行的,而 j 是针对 df.D 运行的,并且 i 的结果以此类推。 我想看看哪组数字将提供最好的 output。 下面是代码的外观片段。
program.py
class Test:
def runTest():
pass
def run():
runTest()
bunch of if/else statements to check the data
pd.to_csv to export the result
def aa(int):
calculation..
def bb(int):
do something
...
runTest.py
for i in range(10,25):
for j in range(45,85):
for k in range(6,16):
for l in range(7,21):
for m in range(65,75):
class hello(Test):
def runTest():
a = aa(i)
b = bb(j)
...
hello().run()
我已经尝试使用 itertools.product 列出该范围内的所有数字。 但我不知道如何在我的程序中提取这些值。 我希望它具有可扩展性,因为范围会更大,并且会添加更多参数来测试程序。
如何使用 dask 或 multiprocessing 运行这些嵌套的 for 循环,以最大限度地减少运行此任务的时间? 或任何其他建议将不胜感激。 另外,如果有更好的方法来导出结果。 请告诉我。
看来您正在进行某种网格搜索/参数探索。 在这种情况下,我会避免使用类和嵌套循环。
要设置所有参数的列表,您可以使用itertools.product
,例如:
from itertools import product
for i, j in product(range(10), range(20)):
# run calculations
要并行迭代多个参数值,我会使用delayed
:
import dask
from itertools import product
@dask.delayed
def try_calc(i,j,k):
df = pd.read_csv(my_csv_file)
# run calculations
df.to_csv(results_file)
results = dask.compute([
try_calc(i,j,k) for i,j,k in product(range(10), range(20), range(30))
])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.