为什么重定向输出在多处理中不起作用?

时间:2019-04-04 09:24:28

标签: python logging

我正在使用Facebook先知来预测未来的销售量。 问题在于,依赖于问题的pystan在训练时会输出优化程序消息。

我找到了一种方法来阻止来自https://github.com/facebook/prophet/issues/223#issuecomment-310497971的烦人消息,但是只有在主进程中运行该消息时,它才起作用。

功能:

def func():
   with suppress_stdout_stderr():
     p = Propet(*kwargs).fit(training_data)

如果在多进程中运行,如:

  1. joblib

    Parallel(n_jobs=process_num)(
        delayed(func)(pid) for pid in pids
    )
    
  2. 多处理

    with Pool(1) as p:
        r = p.map(func, pids)
    

烦人的日志消息仍会打印。

我试图将其静音

def mute():
    sys.stdout = open(os.devnull, 'w')  

with Pool(1, initializer=mute) as p:
    r = p.map(func, pids)

没有成功。

0 个答案:

没有答案