如何在 Python 中对多个嵌套 for 循环使用多处理?

How to use multiprocessing for multiple nested for loop in Python?

我有一个 class 有一堆函数来检查数据对一个巨大的数据帧 ~33gb。变量中的每个值都是 运行 针对数据帧中的一列(比如 D 列),然后将其附加到数据帧本身以供其他迭代计算值。

无论如何,i 是 运行 对 df.D,j 是 运行 对 df.D 以及 i 的结果等等。我正在尝试查看哪组数字将提供最佳输出。下面是代码的片段。

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 列出该范围内的所有数字。但我不知道如何在我的程序中提取这些值。我希望它具有可扩展性,因为范围会更大,并且会添加更多参数来测试程序。

我如何 运行 这些嵌套的 for 循环与 dask 或 multiprocessing 来最小化 运行 这个任务的时间?或任何其他建议,我们将不胜感激。另外,如果有更好的方法导出结果。请告诉我。

您似乎在进行某种网格 search/parameter 探索。在这种情况下,我会避免 类 和嵌套循环。

要设置所有参数的一个列表,您可以使用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))
])