代码之家  ›  专栏  ›  技术社区  ›  cooke

python多处理使用特定参数串行运行

  •  0
  • cooke  · 技术社区  · 6 年前

    我正在尝试并行运行一组代码,它似乎在某些情况下有效,但在其他情况下无效。下面的代码与保存的\u模型并行运行[项目]不存在或不存在,但当它有数据时,运行速度非常慢,并且以串行方式运行。

    有什么想法吗?保存的\u model对象没有那么大,而且每次运行都不同。 来自statsmodels。运输安全管理局。arima\u模型导入arima def do\U parallel\U work(自我): 有议员。池(进程=自身最大工作线程数)作为池: job\u参数=[(项 ,target\u列 ,saved\u models[项目]如果saved\u models不是None,则为saved\u models[项目],否则为None )对于项目中的项目] 结果=池。映射(self.do\u work\u helper,job\u 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 回复  |  直到 6 年前
        1
  •  0
  •   cooke    5 年前

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