コマンドをN回「時間測定」する方法(CTRL-Cを使用して停止できる方法)

コマンドをN回「時間測定」する方法(CTRL-Cを使用して停止できる方法)

短い質問:

これはMacで行われます。

time for i in {1..10}; do python3 foo.py ; done

しかし、CTRL-Cはこれを防ぐことはできません。どのように機能させるのですか? (またはN回の実行時間を測定する方法は?)


詳細:

私が実行できるいくつかの標準プログラムテストはgithubにあります。

 python3 foo.py

または

 time python3 foo.py

実行時間は0.27秒と報告されます。 1000のテストケースが接続されており、テストフレームワークに接続されているので、テストを変更したくないので、時間を100回測定したいと思います。このコマンドが10回または100回の時間を測定する方法はないようですtime(Unixでは少し奇妙なことです。数年が過ぎた後もそのように便利で簡単なものがUnixに組み込まれていないためですtime)。以下を使用できます。

time for i in {1..10}; do python3 foo.py ; done

ただし、CTRL-Cはこれを停止しません。 Pythonスクリプトを停止し、残りを実行し続けます。幸いなことに、そうでないか100入力されていません1000timeこれを使用する方法やより良い方法はありますか? (プログラムを変える以外に?)

ベストアンサー1

Ctrl-Cループ内で新しいプロセスを作成するため、これは不可能です。Ctrl-C各繰り返し速度の100、1000倍でこれらすべてを破る必要があります。あるいは、
ループによって生成された最新のフォアグラウンドプロセスを停止するを押すと、同じ効果が得られます。bashCtrl-Z辞めるループ自体。

おすすめ記事