\

Pythonのmultiprocessingモジュールを使用して、サブプロセスのログをメインプロセスから出力する方法について説明します。

ロギングの設定

まず、multiprocessingモジュールからget_logger関数を使用してロガーを取得します。次に、QueueHandlerを使用してログの出力先をキューに設定します。

import logging
import multiprocessing
from logging.handlers import QueueHandler

logger = multiprocessing.get_logger()
logger.setLevel("WARN")
logger.addHandler(QueueHandler(queue))

サブプロセスの作成

サブプロセスで動く関数を作成します。この関数では、multiprocessing.get_logger()を使用してロガーを取得し、ログメッセージを出力します。

def process(i):
    logger = multiprocessing.get_logger()
    logger.warning(f"num {i}")

メインプロセス

メインプロセスでは、まずマネージャーとキューを作成します。次に、QueueListenerを使用してキューのログを標準出力に流します。

def main():
    manager = multiprocessing.Manager()
    queue = manager.Queue()
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(logging.Formatter("%(processName)s %(message)s"))
    listener = QueueListener(queue, console_handler)
    listener.start()
    ...
    listener.stop()

以上の方法で、Pythonのmultiprocessingモジュールを使用して、サブプロセスのログをメインプロセスから効率的に出力することができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です