Python: делать вещи параллельно и логировать с помощью loguru

Я пишу службу Python, которая должна

  • заняться машинным обучением
  • и опубликовать несколько сообщений в Solace.

Поскольку некоторые библиотеки машинного обучения не выпускают GIL, я считаю, что не могу использовать потоки.

Я пытался использовать Joblib. Я создал часть машинного обучения и часть публикации сообщений в разных заданиях, и это сработало, если я отключил ведение журнала в файлы. Проблема в том, что у меня есть loguru для ведения журнала на стандартный вывод, а также в файлы. И когда я включаю ведение журнала в файлы, я получаю

_pickle.PicklingError: Cannot pickle files that are not opened for reading: a

от Джоблиба. Но, к сожалению, я не могу отключить ведение журнала в файлы в производстве. Поэтому я ищу решение, как запустить часть публикации и часть машинного обучения параллельно с включенным ведением журнала.

Единственная идея, которая у меня есть, - настроить ведение журнала в файлы в заданиях Joblib вместо того, чтобы делать это раньше.

Вопрос связан с Многопроцессорное ведение журнала - как использовать loguru с joblib Параллельно


person Radek Micek    schedule 03.03.2021    source источник
comment
У меня та же проблема, похоже, это связано с тем, как обработчики хранения логуру, если вы удалите все стоки перед распараллеливанием, это решит. начать поиск надежного решения   -  person Glauco    schedule 30.06.2021