文章目录
无法使用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('中国')