无法使用Ctrl-C终止Python脚本

写了一个死循环,类似:

def  function():
   while True:
       #my code

程序运行后想用ctrl+c按键停止程序,可是终止不了。以下为解决办法:

第一步:加入sys,signal模块,定义一个quit函数

import sys                                                                  
import signal
 
def quit(signum, frame):
    print ''
    print 'stop fusion'
    sys.exit()

第二步:在funtion函数中加入两行代码:

def funtion():
    signal.signal(signal.SIGINT, quit)                                
    signal.signal(signal.SIGTERM, quit)
    while True:
        #my code

另外编写代码

while True一定要有break语句

如下,如果 我们注释调 异常中的 break,我们ctrl+c 就不起作用,因为键盘KeyboardInterrupt异常在while循环中捕获,代码依旧循环。

def print_hi(name):
    print("Hi, {0}".format(name))

    while True:
        try:
            print("xxx")
            time.sleep(30)
        except:
            print traceback.format_exc()
            #break
if __name__ == '__main__':
    print_hi('中国')

我们解除调break 注释,发现ctrl +c 立马退出了程序。

在python中中断/中断time.sleep()

While 1:
    time.sleep(60)

在上面的代码中,当控件进入time.sleep函数时,需要经过整整60秒才能处理CTRL C 。

如上面描述,我们用try 捕获 KeyboardInterrupt 中断,然后直接break,就可以立即处理停止程序。

def print_hi(name):
    print("Hi, {0}".format(name))

    while True:
        try:
            print("xxx")
            time.sleep(60)
        except:
            print traceback.format_exc()
            break
if __name__ == '__main__':
    print_hi('中国')
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐