resource
Python のモジュールと POSIXによって Unix システムで公開されているリソース制限メカニズムに相当する Windows は何setrlimit
ですか?
具体的には、子プロセスのプロセッサ時間を数秒に制限しています。制約内で完了していない場合は終了します。
私の知る限り、Python で子プロセスが使用するプロセッサ時間に関する情報を取得する移植可能な方法はありません。しかし、どのsubprocess
モジュールが (subprocess.Popen
推奨される で子プロセスを開始していると仮定して) 与えるかは、 内の子プロセスのプロセス ID ですPopen.pid
。Windows でできることは、繰り返し使用して実行しtasklist
(マニュアルを参照) subprocess.check_output
、PID をフィルターとして使用して、その出力から子プロセスに関する情報を抽出することです。
子プロセスに十分な CPU 時間があるとすぐに、子プロセスsubprocess.Popen()
を開始していた場合は、Popen.kill
メソッドを使用してそれを強制終了できます。
しかし、タイマーを使用して指定された秒数の壁時間が経過した後、子プロセスを強制終了する方が簡単だと思います。子プロセスが (何らかの理由で) CPU 時間を使用せずにハングした場合、それを待っている Python プログラムも CPU 時間を消費するためです。