我正在尝试并行运行一组代码,它似乎在某些情况下有效,但在其他情况下却无效。下面的代码与saved_models [item]并行运行是None或不存在但运行速度非常慢,并且在有数据时连续运行。
有什么想法? saved_model对象不是那么大,每次运行都不同。 来自statsmodels.tsa.arima_model导入ARIMA def do_parallel_work(self): 使用mp.Pool(processes = self.max_workers)作为池: job_args = [(项目 ,target_col ,saved_models [item]如果saved_models不是None,则items_models中的项目为None )对于项目中的项目] results = pool.map(self.do_work_helper,job_args)
for result in results:
if result[1] is not None:
results_dict[result[0]] = result[1]
def do_work_helper(self, args):
return self.do_work(*args)
def do_work(self, item, target_cols, saved_model):
# can't show exactly what this but essentially it does something to the affect of:
my_model = ARIMA()
# if saved_model is None
fit_model = my_model.fit(trend='nc', maxiter=1000, disp=0)
# else
my_model.predict()
return item, stuff
答案 0 :(得分:0)
我的问题是我在一个类中执行此操作,而并非所有功能都是静态的。因此,它正在为每个线程复制完整的类,而我不希望这种情况发生。我相信只有一个子函数不是静态的,这迫使整个类被复制。