私はpython3スクリプトを使用していくつかのジョブを自動化しています。 そのような外部ジョブの時間を測定する必要があります。だから私は、サブプロセスモジュールと組み合わせて)内蔵の時間(のpython 3を使用することにしました:Python 3のサブプロセスが同等のbashよりも遅い
with open(in_files[i],'r') as f, open(sol_files[i],'w') as f_sol:
start = time.time()
process = subprocess.run(['./'+src_files[i]], stdin = f, stdout=f_sol)
end = time.time()
このPythonのスニペットによって算出した経過時間が0.73秒しかし
、同等のbashコマンドである:
time ./file <input_file> output_file
は大幅に高速化されます。この巨大な矛盾を引き起こしている可能性が0.5秒
?たぶん、リダイレクトの使用のために、Pythonインタプリタでコンテキストを切り替えることができますか?バッファリングに関連する何か?上記のコードの時間が1秒+無視できる時間経過し
start = time.time()
process = subprocess.run(['sleep','1'])
end = time.time()
:
リダイレクト使用せずに同様のコードは、この挙動を示しません。
お礼
0.5秒*は0.73秒よりも大幅に高速*とは考えられませんでした。あなたは数回測定を繰り返しましたか?たぶん、ランニングタイムの変動は、あなたが観察した差よりもはるかに大きいでしょう。 – mkrieger1
はい、私はしました。結果は同じでした。 STDevは無視できた。宜しくお願いします –