Почему перенаправление вывода не работает в многопроцессорной среде? - PullRequest
0 голосов
/ 04 апреля 2019

Я использую пророка в фейсбуке для прогнозирования будущих продаж.Существует проблема, заключающаяся в том, что pystan, от которой зависит prohpet, будет выводить сообщения оптимизатора во время обучения.

Я нашел способ остановить это раздражающее сообщение с https://github.com/facebook/prophet/issues/223#issuecomment-310497971, но это сработает, только если вы запустите его в основном процессе.

func:

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)

Без успеха.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...