Pythonデーモンプロセスがどのようにサブプロセスを監視するのか

Pythonでは、マルチプロセスモジュールを利用して、子プロセスを作成してそのモニタリングを行うことができます。

  1. マルチプロセッシング
import multiprocessing
  1. サブプロセスを作成する関数を表現する。
def child_process():
    while True:
        # 子进程的任务逻辑
        pass
  1. デーモンを作成するための関数を作成します。
def daemon_process():
    # 创建子进程
    p = multiprocessing.Process(target=child_process)
    # 将子进程设置为守护进程
    p.daemon = True
    # 启动子进程
    p.start()
    # 等待子进程结束
    p.join()
  1. メインプログラム内でデーモンを起動する。
if __name__ == '__main__':
    # 创建守护进程
    d = multiprocessing.Process(target=daemon_process)
    # 将守护进程设置为守护进程
    d.daemon = True
    # 启动守护进程
    d.start()
    # 主进程的任务逻辑

先述のコードでは、デーモンプロセスdが作成され、その内部で子プロセスpが作成されます。子プロセスpはchild_process関数内のタスクロジックを実行します。メインプロセスが終了すると、デーモンプロセスdは自動的に終了し、それにより子プロセスpが自動的に終了します。

ただし、デーモンモード時は子プロセスは Ctrl+C などの割り込み信号の影響を受けないので、実際のタスクロジックでは、他の手段で子プロセスの終了を制御する必要がある点に注意する。

bannerAds