我查找了很多关于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)
有什么想法吗?为什么要比按顺序的方法花费更长的时间,或者解决这个问题的方法?你知道吗
谢谢!:)
目前没有回答
相关问题 更多 >
编程相关推荐