Pythonスクリプトの実行を停止/終了する方法は?


104

IDLEでテキストファイルをトークン化するプログラムを作成しましたが、349個のテキストファイルがトークン化され始めました。どうすれば停止できますか?実行中のPythonプログラムを停止するにはどうすればよいですか?


5
ctrl+cそれを殺す必要があります。また、kill -9それは
xbonez

1
ここでの多くの回答はプラットフォーム固有です。お使いのプラットフォームを検索する(WindowsやLinux、Macの、他の何か?)
tripleee

回答:


60

プログラムを停止するには、Control +を押しますC


23
この方法は、私の窓のラップトップ上で働いていたが、私のLinuxデスクトップ上で、それがあった^C...端子と、まだCPUの多くを使用しているシステムモニタを示しpythonで
user3768495

スクリプトを停止した後、再開することはできますか?
Gathide 2018

9
@Gathideプロセスを一時停止してバックグラウンドに置きたい場合は、を押しますCtrl + Z(少なくともLinuxでは)。次に、それを強制終了する場合kill %nは、「n」がを押しCtrl + Zたときに「停止」の横に表示された番号である場合に実行します。再開する場合は、を実行しfgます。
cluxter

プログラムに:句以外の一般的なものがある場合は機能しません。例外:割り込みをキャッチし、何かを実行する(または実行しない)と、プログラムは陽気に続行します。
DragonLord

116

exit()コードで関数を使用する場合にも実行できます。より理想的には、あなたはすることができますsys.exit()。パッケージを介して並行して実行している場合でも、Python終了sys.exit()する可能性がありmultiprocessingます。

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


8
注:sys.exit(1)プロセスを停止しない例を見つけることができました。私は基本的に複数のスレッドを持っており、それらのそれぞれはによって開始された外部プロセスでブロックしますPopen。Pythonプロセス自体だけでなく、Pythonプロセスによって作成されたすべてのサブプロセスを強制終了するための核オプションが必要です。今のところ見つかりませんでした。
DICI

sys.exit()はプロセスを
強制

37

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

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

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

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

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

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

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

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

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


31
  • Pythonスクリプトを停止するには、を押しCtrl + Cます。
  • を使用したスクリプト内で、exit()それを実行できます。
  • 終了するだけで、インタラクティブなスクリプトでそれを行うことができます。
  • を使用できますpkill -f name-of-the-python-script

最後のオプションは、スクリプトをデタッチモードで実行する場合に特に便利です。例:python script.py&
richar8086

26

Ctrl-BreakCtrl-Cよりも強力です


4
Daniel Prydenが答えで明らかにしているように、私のように混乱している人のために、キーボードのBreakキーにPauseというラベルを付けることもできます。:)
JakeStrang

25

実行中のプログラムを停止するには、Ctrl+Cを使用してプロセスを終了します。

Pythonでプログラムで処理するには、sysモジュールをインポートしてsys.exit()、プログラムを終了する場所を使用します。

import sys
sys.exit()

17

キーボードを使用してPythonスクリプトを停止するには:Ctrl+C

コードを使用して停止するには(これはPython 3で機能しました):

import os
os._exit(0)

次のものも使用できます。

import sys
sys.exit()

または:

exit()

または:

raise SystemExit

4

Pythonシェルに巻き込まれた場合は、Ctrl + Zで実行する必要があります。スクリプトのインスタンスはバックグラウンドで実行し続ける可能性があるため、Linuxでは対応するプロセスを強制終了する必要があることに注意してください。


これは、(多くの)並列プロセスを実行しているときに便利であり、CTRL-Cはそれらすべてを強制終了しません。CTRL-Zの後、あなたはチェックするjobsps、それから、kill 8923754またはあなたが殺す必要があるどんなジョブID /プロセスIDでもすることができます
Paul

3

LinuxターミナルでPythonスクリプトを実行している場合、CTRL + \が機能します。(CRTL + CまたはDではありません)


3

Control+DはWindows10で動作します。また、exit()最後に置くことも動作します。


3

Jupyter Notebookを使用している場合、exit()はカーネルを強制終了するため、お勧めできません。raiseコマンドはプログラムを停止します。


2

を使用しActivity Monitorてpyプロセスを停止することもできます


1

プログラムを停止するには、CTRL+を押すだけですD

またはexit()


0

Ctrl+ Alt+Deleteを押すと、タスクマネージャーがポップアップします。実行中のPythonコマンドを見つけて右クリックし、[停止]または[強制終了]をクリックします。


0

Spyderを使用している場合は、CTRL +を 使用します(DOT)カーネルを再起動し、プログラムを停止します。


0

Windowsソリューション:Control + C

Macbookソリューション:Control (^) + C

もう1つの方法は、ターミナルを開いて、と入力しtop、強制終了するPIDプロセスを書き留めてから、ターミナルで入力することです。kill -9 <pid>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.