2017-08-30 147 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 ) –