蟒蛇继续使用相同的线程持续时间长为长时间运行过程

问题描述:

我有我想保持运行超过6小时模型并联:蟒蛇继续使用相同的线程持续时间长为长时间运行过程

pool = multiprocessing.Pool(10) 
for subModel in self.model: 
    pool.apply_async(self.compute, subModel, features) 
pool.close() 
pool.join() 

现在的问题是速度太慢,因为我有调用pool = multiprocessing.Pool(10)和pool.join(),每次构建和解构10个线程,而模型在6个小时内运行多次。

我认为解决方案有10个线程在后台继续运行,这样每当有新数据进入时,它都会马上进入模型,而不用担心创建新线程和解构浪费大量时间的线程。

python有没有办法让你有很长的运行过程,这样你就不需要一遍又一遍地重新开始和停止了?

+0

您是否知道一次只能运行1个python线程,使其不适合获得性能? – nwp

+0

我以为multiprocessing.pool,与GIL的线程类不同,可以让你同时运行多个线程 –

+0

@nwp'multiprocessing.Pool'不受GIL的影响。虽然提到池有“线程”是不正确的。 – Sneftel

在向其提交一组任务后,您不需要close()join()(并销毁)Pool。如果您想确保您的apply_async()已完成,请拨打apply(),下次再使用相同的Pool。或者,如果您在等待任务时可以做其他事情,请保存由apply_async返回的结果对象,并在其上面调用wait(),一旦无法继续完成。

+0

thx很多Sneftel –