我正在开发一个启动多个进程和数据库连接的python脚本.我时不时地想用Ctrl+C信号杀死脚本,并且我想做一些清理.

在Perl中,我会这样做:

$SIG{'INT'} = 'exit_gracefully';

sub exit_gracefully {
    print "Caught ^C \n";
    exit (0);
}

如何在Python中进行类似操作?

推荐答案

signal.signal注册你的处理程序,如下所示:

#!/usr/bin/env python
import signal
import sys

def signal_handler(sig, frame):
    print('You pressed Ctrl+C!')
    sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)
print('Press Ctrl+C')
signal.pause()

代码改编自here.

更多关于signal的文档可以在here中找到.

Python相关问答推荐

如何使用SubProcess/Shell从Python脚本中调用具有几个带有html标签的参数的Perl脚本?

如何使用Google Gemini API为单个提示生成多个响应?

将jit与numpy linSpace函数一起使用时出错

重新匹配{ }中包含的文本,其中文本可能包含{{var}

删除任何仅包含字符(或不包含其他数字值的邮政编码)的观察

如何根据参数推断对象的返回类型?

大小为M的第N位_计数(或人口计数)的公式

为什么默认情况下所有Python类都是可调用的?

try 将一行连接到Tensorflow中的矩阵

我如何根据前一个连续数字改变一串数字?

形状弃用警告与组合多边形和多边形如何解决

如何使用scipy的curve_fit与约束,其中拟合的曲线总是在观测值之下?

如何将数据帧中的timedelta转换为datetime

根据客户端是否正在传输响应来更改基于Flask的API的行为

如何在Python中从html页面中提取html链接?

在pandas中,如何在由两列加上一个值列组成的枢轴期间或之后可靠地设置多级列的索引顺序,

为什么按下按钮后屏幕的 colored颜色 保持不变?

VSCode Pylance假阳性(?)对ImportError的react

为什么在不先将包作为模块导入的情况下相对导入不起作用

为什么在更新Pandas 2.x中的列时,数据类型不会更改,而在Pandas 1.x中会更改?