Pythonスクリプトの実行を停止/終了するにはどうすればよいですか?



How Stop Terminate Python Script From Running



解決:

あなたが使用する場合にもそれを行うことができますコード内のexit()関数。より理想的には、あなたはすることができますsys.exit()。sys.exit() そうかもしれない を介して並行して実行している場合でも、Pythonを終了しますマルチプロセッシングパッケージ。

注:を使用するにはsys.exit()、インポートする必要があります:sysのインポート




プログラムを停止するには、Control + Cを押すだけです。


プログラムがインタラクティブコンソールで実行されている場合、CTRL + Cを押すとメインスレッドでのKeyboardInterrupt例外。



Pythonプログラムがそれをキャッチしない場合は、KeyboardInterruptにより、Pythonが終了します。ただし、KeyboardInterruptを除く:ブロック、または裸のようなものただし、:は、このメカニズムが実際にスクリプトの実行を停止するのを防ぎます。

時々KeyboardInterruptが機能していません。代わりにSIGBREAKシグナル。 Windowsでは、CTRL + Pause / Breakは、キャッチ可能なものを生成せずにインタプリタによって処理される場合がありますKeyboardInterrupt例外。

ただし、これらのメカニズムは主に、Pythonインタープリターが実行されており、オペレーティングシステムのイベントに応答している場合にのみ機能します。 Pythonインタープリターが何らかの理由で応答しない場合、最も効果的な方法は、インタープリターを実行しているオペレーティングシステムプロセス全体を終了することです。このメカニズムは、オペレーティングシステムによって異なります。



Unixスタイルのシェル環境では、CTRL + Zを押して つるす 現在コンソールを制御しているプロセスは何でも。シェルプロンプトが返されたら、次を使用できます。中断されたジョブを一覧表示するジョブ。最初の中断されたジョブを強制終了できます。%1を殺します。 (再度実行を開始する場合は、を使用してフォアグラウンドでジョブを続行できます。fg%1;詳細については、ジョブ制御に関するシェルのマニュアルをお読みください。)

または、UnixまたはUnixライクな環境では、PythonプロセスのPID(プロセス識別子)を見つけて、PIDで強制終了することができます。次のようなものを使用しますps aux | grep pythonを使用して、実行中のPythonプロセスを見つけ、使用します送信するために殺すSIGTERMシグナル。

NSUnixのkillコマンドは送信しますデフォルトではSIGTERMであり、Pythonプログラムは次のシグナルハンドラーをインストールできます。を使用したSIGTERM信号モジュール。理論的には、SIGTERMは、プロセスを正常にシャットダウンする必要があります。ただし、プロセスがスタックしている場合(たとえば、中断できないIOスリープ状態でブロックされている場合)、プロセスはそれを処理するためにウェイクアップすることさえできないため、SIGTERMシグナルは効果がありません。

シグナルに応答していないプロセスを強制的に強制終了するには、を送信する必要がありますSIGKILLシグナル。-9を殺すのは9はの数値ですSIGKILL定数。コマンドラインから、次を使用できます殺す-KILL(または-9を略して殺す)を送信するにはSIGKILLを実行し、実行中のプロセスをすぐに停止します。

Windowsでは、プロセスシグナルのUnixシステムはありませんが、を使用して実行中のプロセスを強制的に終了することができます。TerminateProcess関数。インタラクティブに、これを行う最も簡単な方法は、タスクマネージャーを開いて、プログラムに対応するpython.exeプロセスを選択し、[プロセスの終了]ボタンをクリックします。また、使用することができます同様の目的のためのtaskkillコマンド。