我在写一些可以很容易并行化的开放式cv代码。但我遇到了一个问题。蟒蛇多线程的例子一般是这样的:有没有办法在python中重新使用线程工作?
from multiprocessing.dummy import Pool
def slow_function(input):
** opencv transforms and things **
return output
worker_pool = Pool(4)
result = worker_pool.map(slow_function,list_of_inputs)
worker_pool.close()
worker_pool.join()
我已经得到这为我的代码工作,但我一直在计时它和线worker_pool = Pool(4)
本身就需要100毫秒。其余代码运行速度非常快。
这产生了100ms的最小开销,这使得不是特别有用。我的应用程序是实时的,所以即使我的代码的其余部分立即运行,我也会被限制在10fps。
看来我应该能够避免每个周期创建和销毁池,从而节省了这100ms。有没有办法做到这一点?理想情况下,我想打电话给map
然后join
,只是有工人“忘记”,他们甚至跑到什么,一旦他们跑slow_funcion
并返回
非常好!这工作。执行时间从135ms(单线程)和110ms(多线程)变为40ms(多线程,重用工人)。谢谢! – Drew