通过多处理优化嵌套循环?

时间:2019-06-12 21:41:33

标签: python python-3.x pandas dataframe python-multiprocessing

我必须对多个CSV文件的数据进行计算。我在编程方面还很陌生,其想法是迭代数据并将变量值发送给函数。 有四个函数,每个变量的输入数量分别为1、2、3、4。 在多个变量函数中,所有集合都是唯一的,并且连续变量要大于先前的变量。

例如,如果有6个Trow,则结果总数将为56

1 variable gives 6 (unique sets)
2 variables gives 15 (unique sets)
3 variables gives 20 (unique sets)
4 variables gives 15 (unique sets)

4个变量的示例-变量集为(0,1,2,3,4,5):

(a,b,c,d)
(0,1,2,3)
(0,1,2,4)
(0,1,2,5)
(0,1,3,4)
(0,1,3,5)
(0,1,4,5)
(0,2,3,4)
(0,2,3,5)
(0,2,4,5)
(0,3,4,5)
(1,2,3,4)
(1,2,3,5)
(1,2,4,5)
(1,3,4,5)
(2,3,4,5)

我尝试了一个简单的while循环,但是由于文件总数为200,每个文件的平均行数为16(不同文件中的变量Trow),这意味着总共需要进行迭代大约503,200次,并且需要几个小时才能完成。

如果我可以使用多处理或消除嵌套循环,将会很有帮助。

while i < 10:

    x = 'filename'
    df = pd.read_csv(x.csv)                   #reads csv file
    Trow = df.shape[0]

    a = 0
    while a < Trow:
        val1  = df.iat[a,0]
        Function1(val1)   # perform calculations and write to file
        b = a + 1
        while b < Trow:
            val2  = df.iat[b,3]
            Function2(val1,val2)   # perform calculations and write to file
            c = b + 1
            while c < Trow:
                val3  = df.iat[a,4]
                Function3(val1,val2,val3)   # perform calculations and write to file
                d = c + 1
                while d < Trow:
                    val4  = df.iat[d,7]
                    Function4(val1,val2,val3,val4)   # perform calculations and write to file
                    d += 1
                c += 1
            b += 1
        a += 1
    i += 1

0 个答案:

没有答案