파이썬 스크립트 실행을 중지 / 종료하는 방법은 무엇입니까?


106

IDLE에서 텍스트 파일을 토큰 화하는 프로그램을 작성했고 349 텍스트 파일을 토큰 화하기 시작합니다! 어떻게 멈출 수 있습니까? 실행중인 Python 프로그램을 어떻게 중지 할 수 있습니까?


5
ctrl+c죽여야합니다. 또한, kill -9
xbonez

1
여기에있는 많은 답변은 플랫폼별로 다릅니다. 플랫폼 검색 (Windows, Linux, Mac, 다른 것?)
tripleee

답변:


60

프로그램을 중지하려면 Control +를 누르십시오 C.


26
이 방법은 내 윈도우 노트북에 근무하지만 내 리눅스 데스크탑에, 그것을 보여 ^C... 터미널 여전히 CPU를 많이 사용하는 시스템 모니터 보였다 파이썬에서
user3768495

스크립트를 중지 한 후 다시 시작할 수 있습니까?
Gathide

10
@Gathide 프로세스를 일시 중지하고 백그라운드에 두려면 Ctrl + Z(적어도 Linux에서는) 키를 누릅니다 . 그런 다음 그것을 죽이고 kill %n싶다면를 눌렀을 때 "Stopped"옆에있는 숫자가 "n"인 곳 에서 실행 하십시오 Ctrl + Z. 재개하려면을 실행하십시오 fg.
cluxter

1
프로그램에 일반 except : 절이 있으면 작동하지 않습니다. 예외 : 인터럽트를 포착하고 무언가를 수행 (또는 수행하지 않음) 한 다음 프로그램이 즐겁게 계속됩니다.
DragonLord

@DragonLord 당신의 장군은 Ctrl + C로 오류가 발생하는 것을 제외하고는 특별한 것이 있어야합니다. 어쨌든 일반적인 예외는 일반적으로 권장되지 않습니다.
페르

130

exit()코드 에서 함수 를 사용하는 경우에도 수행 할 수 있습니다 . 더 이상적으로는 sys.exit(). 패키지를 통해 병렬로 실행하는 경우에도 Python을 종료 sys.exit()수 있습니다multiprocessing .

참고 :를 사용하려면 sys.exit()다음을 가져와야합니다.import sys


8
참고 : sys.exit(1)프로세스를 중단하지 않는 예를 찾을 수 있습니다. 기본적으로 여러 스레드가 있으며 각 스레드는 Popen. Python 프로세스와 Python 프로세스 자체에서 생성 한 모든 하위 프로세스를 종료하려면 핵 옵션이 필요합니다. 지금까지 찾지 못했습니다.
Dici

sys.exit ()는 프로세스를 죽이지 않고 프로그램을 닫아서 실행을 멈추지 않는 SystemExit 예외를 발생
시킵니다

39

프로그램이 대화 형 콘솔에서 실행중인 경우 CTRL+ C를 누르면 KeyboardInterrupt주 스레드 에서 예외 가 발생합니다.

Python 프로그램이이를 포착하지 못하면 KeyboardInterruptPython이 종료됩니다. 그러나 except KeyboardInterrupt:블록 또는 bare와 같은 것은 except:이 메커니즘이 실제로 스크립트 실행을 중지하는 것을 방지합니다.

때로는 KeyboardInterrupt작동하지 않으면 SIGBREAK대신 신호를 보낼 수 있습니다 . Windows에서 CTRL+ Pause/BreakKeyboardInterruptcatch 가능한 예외 를 생성하지 않고 인터프리터에 의해 처리 될 수 있습니다 .

그러나 이러한 메커니즘은 주로 Python 인터프리터가 실행 중이고 운영 체제 이벤트에 응답하는 경우에만 작동합니다. 파이썬 인터프리터가 어떤 이유로 응답하지 않는 경우 가장 효과적인 방법은 인터프리터를 실행하는 전체 운영 체제 프로세스를 종료하는 것입니다. 이에 대한 메커니즘은 운영 체제에 따라 다릅니다.

Unix 스타일 셸 환경에서는 CTRL+ Z를 눌러 현재 콘솔을 제어하고있는 프로세스 를 일시 중단 할 수 있습니다 . 셸 프롬프트를 다시 받으면을 사용 jobs하여 일시 중단 된 작업을 나열하고 kill %1. (다시 실행을 시작하려면 fg %1; 을 사용하여 포 그라운드에서 작업을 계속할 수 있습니다 . 자세한 정보는 작업 제어에 대한 쉘의 매뉴얼을 읽으십시오.)

또는 Unix 또는 Unix와 유사한 환경에서 Python 프로세스의 PID (프로세스 식별자)를 찾아 PID로 종료 할 수 있습니다. 다음과 같은 ps aux | grep python것을 사용 kill <pid>하여 실행중인 Python 프로세스를 찾은 다음 SIGTERM신호 를 보내는 데 사용 합니다 .

killUnix 의 명령은 SIGTERM기본적으로 전송 되며 Python 프로그램은 모듈 SIGTERM사용을 위한 신호 처리기를 설치할 수 있습니다 signal. 이론적으로 모든 신호 처리기 SIGTERM는 프로세스를 정상적으로 종료해야합니다. 그러나 때때로 프로세스가 중단 된 경우 (예 : 중단 SIGTERM불가능한 IO 절전 상태에서 차단됨) 프로세스가이를 처리하기 위해 깨어나지 못 하기 때문에 신호가 영향을 미치지 않습니다.

신호에 응답하지 않는 프로세스를 강제로 종료하려면 상수 의 숫자 값 이기 때문에 SIGKILL신호 를 보내야합니다 . 명령 줄에서 (또는 간단히)를 사용하여 a를 보내고 즉시 실행중인 프로세스를 중지 할 수 있습니다 .kill -99SIGKILLkill -KILL <pid>kill -9 <pid>SIGKILL

Windows에서는 프로세스 신호의 Unix 시스템이 없지만 TerminateProcess함수 를 사용하여 실행중인 프로세스를 강제로 종료 할 수 있습니다 . 대화식으로이를 수행하는 가장 쉬운 방법은 작업 관리자를 열고 python.exe프로그램에 해당하는 프로세스를 찾은 다음 "프로세스 종료"버튼을 클릭하는 것입니다. taskkill비슷한 목적으로 명령을 사용할 수도 있습니다 .


34
  • 파이썬 스크립트를 중지하려면을 누르십시오 Ctrl + C.
  • 를 사용하는 스크립트 내 exit()에서 할 수 있습니다.
  • 종료만으로 대화 형 스크립트에서 수행 할 수 있습니다.
  • 사용할 수 있습니다 pkill -f name-of-the-python-script.

1
당신은 예를 들어 분리 된 모드에서 스크립트를 실행할 때 마지막 옵션은 특히 유용합니다python script.py&
richar8086

27

실행중인 프로그램을 중지하려면 Ctrl+ C를 사용 하여 프로세스를 종료합니다.

파이썬에서 프로그래밍 방식으로 처리하려면 sys모듈을 가져 와서 sys.exit()프로그램을 종료 할 위치를 사용 하십시오.

import sys
sys.exit()

26

Ctrl-Break Ctrl-C 보다 강력합니다.


4
Daniel Pryden이 대답에서 명확히 한 것처럼 키보드의 Break 키는 나처럼 혼란스러워하는 사람들을 위해 Pause라는 레이블이 붙을 수도 있습니다. :)
JakeStrang

19

키보드를 사용하여 Python 스크립트를 중지하려면 : Ctrl+C

코드를 사용하여 중지하려면 (이것은 Python 3에서 저에게 효과적이었습니다) :

import os
os._exit(0)

다음을 사용할 수도 있습니다.

import sys
sys.exit()

또는:

exit()

또는:

raise SystemExit

4

파이썬 셸에 빠지면 Ctrl + Z를 눌러야합니다. 스크립트의 인스턴스는 백그라운드에서 계속 실행될 수 있으므로 Linux에서는 해당 프로세스를 종료해야합니다.


이것은 (많은) 병렬 프로세스를 실행할 때 유용하며 CTRL-C는 모두를 죽이지 않습니다. CTRL-Z 를 누른 후 , 죽여야 할 작업 ID / 프로세스 ID를 확인 jobs하거나 확인할 수 있습니다.pskill 8923754
Paul

3

Linux 터미널에서 실행되는 Python 스크립트가 있으면 CTRL + \가 작동합니다. (CRTL + C 또는 D 아님)


3

Control+ DWindows 10에서 나를 위해 작동합니다. 또한 exit()끝에 두는 것도 작동합니다.


3

exit ()는 Jupyter Notebook에있는 경우 커널을 종료하므로 좋은 생각이 아닙니다. raise명령은 프로그램을 중지합니다.


2

를 사용 Activity Monitor하여 py 프로세스를 중지 할 수도 있습니다.



0

Ctrl+ Alt+를 누르면 Delete작업 관리자가 나타납니다. 실행중인 Python 명령을 찾아 마우스 오른쪽 단추로 클릭 한 다음 중지 또는 종료를 클릭합니다.


0

Spyder로 작업하는 경우 CTRL +를 사용하십시오 . (DOT) 커널을 다시 시작하고 프로그램을 중지합니다.


0

Windows 솔루션 : Control + C.

Macbook 솔루션 : Control (^) + C.

또 다른 방법은 터미널을 열고를 입력 top하고 종료 PID할 프로세스를 기록한 다음 터미널에 입력하는 것입니다.kill -9 <pid>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.