gpt4 book ai didi

python - 有没有办法在python中重用线程工作器?

转载 作者:行者123 更新时间:2023-12-02 17:40:08 26 4
gpt4 key购买 nike

我正在编写一些易于并行化的开放式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并返回就可以运行任何东西

最佳答案

解决您问题的最简单方法是根本不调用worker_pool.close()和/或worker_pool.join()。这样可以使您的线程保持 Activity 状态,并可以处理新数据。
worker_pool.map()无论如何都要等待线程交付结果,并在代码中提供一个同步点。

但是,您确实需要保持线程池 Activity 和可用。根据您的体系结构,将它包装在一个对象中(从而定义一个class)可能是最好的选择。

关于python - 有没有办法在python中重用线程工作器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46102881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com