プロセスの経過時間(ゲーム内の追跡時間)をカウントしようとしています。次のコードは動作しますが、CPUは常にビジー状態です。 私はそれがプロセスがまだ実行されているかどうかをチェックするために絶えずポーリングするwhileループと関係があると思います。これを実装するより効率的な方法がありますか?プロセスの実行時間を効率的に測定する
def is_running(process_name):
try:
subprocess.check_output(['pidof', process_name])
return True
except subprocess.CalledProcessError:
return False
def monitor_process(process_name):
while True:
if is_running(process_name):
start_time = time.time()
while is_running(process_name):
pass
return round(time.time() - start_time, 3)
else:
pass
最初にプロセスが開始されましたか?コードがそれを開始した場合、プロセスが終了してポーリングを完全にスキップするのを待っているスレッドを残すことができます。 – tdelaney
related:[/ usr/bin/timeを使用したPythonのサブプロセス:タイミング情報を取得する方法は他のすべての出力を無視する方法](http://stackoverflow.com/q/28520489/4279) – jfs