2017-08-30 148 views
3

我在Windows上使用iPython。 我目前正在製作一個可以卡在套接字接收的python腳本(我還沒有在這個部分實現魯棒性)。無法殺死ipython進程

我想每一個平常的殺死進程組合鍵(至少我知道的),但iPython卡住了,我必須關閉並重新打開它。 我試過Ctrl + C,Ctrl + Z,Ctrl + D,我不知道是否還有其他組合。

有沒有人經歷過這種問題?

謝謝

亞歷山大

+0

Ctrl + Alt + Suppr? – CCH

+1

_that_超級煩人。我通過在一個線程中執行套接字事情來解決這個問題,並且在main中循環了一個time.sleep(),所以CTRL + C可以工作。 –

+0

我可否知道您使用的是哪個IDE? –

回答

2

一些阻塞操作(與操作系統)不能正常中斷(見cannot interrupt lock.acquire() whereas I can interrupt time.sleep()

我提出了一些辦法,這就需要你知道發生了什麼事情在你的代碼。

  • 運行在它
  • 代碼中的線程上運行的主用一個try/except塊爲KeyboardInterrupt
  • 異常將釋放/關閉套接字,並允許線程完成的處理程序。

爲了簡單起見,我創建了一個使用線程鎖的示例。您可以將其適配到套接字或任何阻止資源:

import threading 
import time,sys 

l = threading.Lock() 

def run(): 
    global l 
    l.acquire() 
    l.acquire() 

t = threading.Thread(target=run) 
t.start() 

while True: 
    try: 
     time.sleep(1) 
    except KeyboardInterrupt: 
     print("quitting") 
     l.release() # now thread can exit safely 
     break 
0

試試下面的命令:

exit 

或嘗試重新啓動內核。

+0

是什麼?但如果OP不能鍵入CTRL,他/她怎麼能輸入'exit'。另外,這是明顯錯誤的。它不起作用 –

+0

您是否嘗試重新啓動內核? –

+0

[你有試過關掉它嗎?](https://www.youtube.com/results?search_query=it+crowd+have+you+tried+turning+it+off+and+on+again ) –