В модуле multiprocessing "из коробки" доступна некоторая поддержка логирования/ведения журнала процессов.
Обратите внимание, что модуль logging не использует разделяемые блокировки процесса, поэтому, в зависимости от типа обработчика, сообщения от разных процессов могут смешиваться.
multiprocessing.get_logger():Функция multiprocessing.get_logger() возвращает регистратор, используемый модулем multiprocessing. При необходимости будет создан новый.
При первом создании регистратор имеет уровень logging.NOTSET и не имеет обработчика по умолчанию. Сообщения, отправленные этому регистратору, по умолчанию не передаются корневому регистратору.
Обратите внимание, что в Windows дочерние процессы наследуют только уровень регистратора родительского процесса - любые другие настройки регистратора не будут унаследованы.
multiprocessing.log_to_stderr():Функция multiprocessing.log_to_stderr() выполняет вызов multiprocessing.get_logger(), но помимо возврата регистратора, созданного get_logger(), она добавляет обработчик, который отправляет вывод в sys.stderr в формате '[%(levelname)s/%(processName)s] %(message)s'.
Ниже приведен пример сеанса с включенным режимом ведением журнала. Полную таблицу уровней ведения журнала смотрите в модуле logging.
>>> import multiprocessing, logging >>> logger = multiprocessing.log_to_stderr() >>> logger.setLevel(logging.INFO) >>> logger.warning('doomed') # [WARNING/MainProcess] doomed >>> m = multiprocessing.Manager() # [INFO/SyncManager-...] child process calling self.run() # [INFO/SyncManager-...] created temp directory /.../pymp-... # [INFO/SyncManager-...] manager serving at '/.../listener-...' >>> del m # [INFO/MainProcess] sending shutdown message to manager # [INFO/SyncManager-...] manager exiting with exitcode 0