我正在尝试并行运行一组代码,它似乎在某些情况下有效,但在其他情况下无效。下面的代码与 saved_models[item] 并行运行 None 或不存在,但在有数据时运行非常慢且串行运行。
有什么想法吗?saved_model对象不是那么大,每次运行都不同。 从statsmodels.tsa.arima_model进口 ARIMA 定义do_parallel_work(个体经营(: 与国会议员。pool(processes=self.max_workers(作为pool: job_args = [(项目 、target_col 、saved_models[项目](如果saved_models不是"无",而"其他"中的项目"saved_models"无" ( 表示项目中的项目] 结果 = 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
我的问题是我在类中执行此操作,并非所有函数都是静态的。所以它为每个线程复制完整的类,我不希望这种情况发生。我相信只有一个子函数不是静态的,这迫使整个类被复制。