python multiprocessing使用某些参数运行serial

时间:2018-05-09 20:57:58

标签: python multiprocessing

我正在尝试并行运行一组代码,它似乎在某些情况下有效,但在其他情况下却无效。下面的代码与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

1 个答案:

答案 0 :(得分:0)

我的问题是我在一个类中执行此操作,而并非所有功能都是静态的。因此,它正在为每个线程复制完整的类,而我不希望这种情况发生。我相信只有一个子函数不是静态的,这迫使整个类被复制。