Pythonデーモンプロセスがどのようにサブプロセスを監視するのか
Pythonでは、マルチプロセスモジュールを利用して、子プロセスを作成してそのモニタリングを行うことができます。
- マルチプロセッシング
import multiprocessing
- サブプロセスを作成する関数を表現する。
def child_process():
while True:
# 子进程的任务逻辑
pass
- デーモンを作成するための関数を作成します。
def daemon_process():
# 创建子进程
p = multiprocessing.Process(target=child_process)
# 将子进程设置为守护进程
p.daemon = True
# 启动子进程
p.start()
# 等待子进程结束
p.join()
- メインプログラム内でデーモンを起動する。
if __name__ == '__main__':
# 创建守护进程
d = multiprocessing.Process(target=daemon_process)
# 将守护进程设置为守护进程
d.daemon = True
# 启动守护进程
d.start()
# 主进程的任务逻辑
先述のコードでは、デーモンプロセスdが作成され、その内部で子プロセスpが作成されます。子プロセスpはchild_process関数内のタスクロジックを実行します。メインプロセスが終了すると、デーモンプロセスdは自動的に終了し、それにより子プロセスpが自動的に終了します。
ただし、デーモンモード時は子プロセスは Ctrl+C などの割り込み信号の影響を受けないので、実際のタスクロジックでは、他の手段で子プロセスの終了を制御する必要がある点に注意する。