Pythonのシグナルハンドラでprintを呼ぶのは安全か?
Is it safe to call print in a Python signal handler?
PythonにはCレベルのシグナルハンドラとユーザー定義のPythonシグナルハンドラの2つがあり、後者はインタプリタが安全な状態で呼ばれるため、Cの制限は適用されない。しかし、シグナルハンドラは再入可能であり、print実行中に再入するとRuntimeErrorが発生してクラッシュする可能性がある。実際に50回のシグナル送信で再現し、極端な状況下でのリスクを実証した。
極端な状況下では、シグナルハンドラ内でprintを呼ぶとプログラムがクラッシュする可能性があります。