在 python 中,是否可以使用 KeyboardInterrupt 或 CTRL+C 来打印状态消息,可能就像打印变量的内容然后继续执行?还是中断总是会杀死进程?
我想做的一个例子:
def signal_handler(signum, frame):
global interrupted
interrupted = True
while true:
update(V)
if interrupted:
print V
您可以使用信号处理程序执行此操作:
import signal
def sigint_handler(signum, frame):
print "my_variable =", frame.f_locals.get("my_variable", None)
signal.signal(signal.SIGINT, sigint_handler)
现在中断脚本调用处理程序,该处理程序打印变量,将其从当前堆栈帧中取出。然后脚本继续。
可以办到。该signal
库提供了此功能,并且它几乎按照您的原型设计方式进行。
import signal
interrupted = False
def signal_handler(signum, frame):
global interrupted
interrupted = True
signal.signal(signal.SIGINT, signal_handler)
while true:
update(V)
if interrupted:
print V
按 ctrl+c 会引发 KeyboardInterrupt。
捕捉 KeyboardInterrupt 并从中打印一条消息,或者使用上面的状态变量。