マルチスレッドプログラム(学生の宿題-バグの可能性が高い)をテストするためのコードを書いていますが、デッドロックを検出できるようにしたいと考えています。正しく実行されると、プログラムは定期的にstdoutへの出力を生成するため、かなり簡単になります。X秒間出力がない場合は、それを強制終了してデッドロックを報告します。関数プロトタイプは次のとおりです。
def run_with_watchdog(command, timeout):
"""Run shell command, watching for output. If the program doesn't
produce any output for <timeout> seconds, kill it and return 1.
If the program ends successfully, return 0."""
自分で書くこともできますが、正しく理解するのは少し難しいので、可能であれば既存のコードを使用したいと思います。誰かが似たようなものを書いた?
わかりました。以下の解決策をご覧ください。同様のことをしている場合は、サブプロセスモジュールも関連している可能性があります。