2011-09-06 3 views
3

보통 Ctrl + C로 작업을 중단 할 수 있지만 때로는 스레드를 사용할 때 작동하지 않습니다. 아래 예를 참조하십시오.어떻게 파이썬에서 차단 방법을 중단시킬 수 있습니까?

Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) 
[GCC 4.5.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import time 
>>> time.sleep(100) 
^CTraceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
K eyboardInterrupt 
>>> import Queue 
>>> q = Queue.Queue(maxsize=3) 
>>> q.put(0) 
>>> q.put(1) 
>>> q.put(2) 
>>> q.put(3) 
^C^C^C^C^C^C^C^C 

^C^C^C 

^C^C 
^C 
@*#()#@#@$!!!!! 

편집 : 다시 통역을 얻을 수있는 방법이 있나요? 솔루션은 지금까지 당신은 \ Ctrl 키와 + 를 파이썬 인터프리터를 죽일 수

+0

이것은 특히 스레딩 문제인 것으로 보입니다. Ctrl-C는'raw_input()'과 같이 인터럽트를 잘 처리합니다. –

+0

주 스레드 만 신호를받습니다. – Keith

답변

3

.. 파이썬 완전하고 기존 네임 스페이스를 죽일.

SIGINT 대신 SIGQUIT이 전송됩니다.

+0

그는 우분투 시스템을 가지고 있지 않습니다. –

+1

@ ʇsәɹoɈ 죄송합니다. 맞습니다. 우연히 완전히 잘못된 지름길을 포함 시켰습니다 (Matt의 rofl 설명). 내 마음이 어디 있는지 몰라. 뒤로 * 슬래시 *는 Python을 종료하고 alt + Back * space는 X를 종료합니다. – phihag

+0

감사합니다. 터미널 창을 닫으면 같은 일이 발생합니다. (oh look, canberran!) – wim

1

^C 실패의 빠른 해결 방법은 모든 스레드를^Z로 먼저 일시 중단 한 다음 종료하는 것입니다.

이 C가 실패^많은 경우 리눅스에서 작동, 난 그냥 테스트 한대로 여기에서도 작동 (파이썬 v.2.6.5 테스트) :

Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) [GCC 4.4.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import Queue 
>>> q = Queue.Queue(maxsize=3) 
>>> q.put(0) 
>>> q.put(1) 
>>> q.put(2) 
>>> [^C] 
KeyboardInterrupt #does not kill the process 
>>> [^Z - Suspends and exits to shell] 
[1]+ Stopped     python 
#mdf:~$ kill -9 %% 
[1]+ Killed     python 
0

게으른 방법으로하는 것은 할 이것은 다른 창을 여는 것입니다.

ps으로 PID를 얻으십시오.

Do kill으로 문제의 프로세스를 중단하십시오.

관련 문제