0

在 python 中,是否可以使用 KeyboardInterrupt 或 CTRL+C 来打印状态消息,可能就像打印变量的内容然后继续执行?还是中断总是会杀死进程?

我想做的一个例子:

def signal_handler(signum, frame):
    global interrupted
    interrupted = True

while true:
   update(V)
   if interrupted:
      print V
4

3 回答 3

5

您可以使用信号处理程序执行此操作:

import signal

def sigint_handler(signum, frame):
     print "my_variable =", frame.f_locals.get("my_variable", None)

signal.signal(signal.SIGINT, sigint_handler)

现在中断脚本调用处理程序,该处理程序打印变量,将其从当前堆栈帧中取出。然后脚本继续。

于 2013-09-24T05:09:14.020 回答
1

可以办到。该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
于 2013-09-24T05:10:56.047 回答
0

按 ctrl+c 会引发 KeyboardInterrupt。

捕捉 KeyboardInterrupt 并从中打印一条消息,或者使用上面的状态变量。

请参阅:在 Python 中捕获 Control-C

于 2013-09-24T05:10:36.980 回答