Python多处理比顺序编程慢

2024-10-03 11:21:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我查找了很多关于python多处理中的慢的问题,但是没有一个能够解决我的问题。你知道吗

在我的算法中,我有一个从0到2的实例,它运行算法中最重要的函数(也是最耗时的函数)。例如,实例的3次迭代是相互独立的。所以,为了利用这个特性,我尝试使用并行处理来运行我的算法。你知道吗

问题是,当我运行我的算法将并行处理,模拟时间高于顺序编程。根据输入的数据,我原来的顺序算法可能需要30到1500毫秒才能运行。即使在我运行~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)

有什么想法吗?为什么要比按顺序的方法花费更长的时间,或者解决这个问题的方法?你知道吗

谢谢!:)


Tags: or实例函数算法getasync顺序时间