Python多处理比顺序编程慢

时间:2016-06-17 20:33:19

标签: python multiprocessing

我查了很多关于python多处理缓慢的问题,但没有一个能够解决我的问题。

在我的算法中,我有一个例如0到2,它运行算法最重要的功能(和最耗时的功能)。例如,3次迭代彼此独立。因此,为了利用这个功能,我试图使用并行处理来运行我的算法。

问题是,当我运行算法时会进行并行处理,模拟时间高于顺序编程。根据输入数据,我的原始顺序算法可能需要大约30ms到大约1500ms才能运行。即使我运行~1500ms的情况,多处理也会变慢。是因为多处理必须处理真正计算成本高昂的问题以使其值得,或者我能做些什么才能让它更适合我?

现在我不会发布我的算法,因为它真的很长,但作为一个例子,我正在做的是:

from multiprocessing import Pool

def FUNCTION(A,B,C,f):
    R1 = A * B * C * f
    R2 = A * B / C * f # The function has several operations, i'm just doing an example here.
    return R, S

if __name__ == '__main__':

    pool = Pool()

    while CP[0] or CP[1] or CP[2] or CPVT[0] or CPVT[1] or CPVT[2]:        

        f=0
           result1 = pool.apply_async(FUNCTION, [A0,B0,C0])  

    f=1
           result2 = pool.apply_async(FUNCTION, [A1,B1,C1]) 

        f=2
           result3 = pool.apply_async(FUNCTION, [A2,B2,C2]) 

        [R0,S0] = result1.get(timeout=1)
        [R1,S1] = result2.get(timeout=1)
        [R2,S2] = result3.get(timeout=1)

任何想法为什么花费的时间比连续的方式要长,或任何解决方案?

谢谢! :)

0 个答案:

没有答案