環境音を聞いて検出するPythonコードがあります。それは私のプロジェクトではありません、私はそれをウェブ(SoPaRe)で見つけました。 ./sopare.py -l
を使用 コマンドを実行すると、サウンドの録音が開始されますが、無限ループになります。停止したいときは、 Ctrl + Cを押す必要があります 。
私の目的は、このプログラムを10秒後に自動的に停止することですが、作成者と話したところ、プログラムには時間制限がないと言われました。
kill PID
で殺そうとしました 、ただしPID
プログラムが実行されるたびに変更されます。 bash
を介して一定時間後に停止するにはどうすればよいですか ?
または、os.system()
を使用してPythonからこのコマンドを実行することもできます。 コマンド。
承認された回答:
最も簡単な解決策は、timeout
を使用することです。 GNU coreutilsのコレクションから(おそらくほとんどのLinuxシステムにデフォルトでインストールされています):
timeout 10 ./sopare.py -l
その他のオプション(man timeout
)については、このユーティリティのマニュアルを参照してください。 )。非GNUシステムでは、このユーティリティはgtimeout
としてインストールできます。 GNUcoreutilsがインストールされている場合。
GNU coreutilsが利用できない場合の別の方法は、バックグラウンドでプロセスを開始し、10秒間待ってから終了信号を送信することです。
./sopare.py -l &
sleep 10
kill "$!"
$!
最近開始されたバックグラウンドプロセス(この場合はPythonスクリプト)のプロセスIDになります。
待ち時間が他の目的で使用される場合:
./sopare.py -l & pid=$!
# whatever code here, as long as it doesn't change the pid variable
kill "$pid"