我查了很多关于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)
任何想法为什么花费的时间比连续的方式要长,或任何解决方案?
谢谢! :)