Python 我是否可以在继续进程的同时利用中断打印状态?

Python 我是否可以在继续进程的同时利用中断打印状态?,python,interrupt,Python,Interrupt,在python中,是否可以使用KeyboardInterrupt或CTRL+C打印状态消息,可能类似于打印变量的内容,然后继续执行? 还是中断总是会扼杀进程 我想做的一个例子: def signal_handler(signum, frame): global interrupted interrupted = True while true: update(V) if interrupted: print V 可以使用信号处理程序执行此操作: imp

在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)

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

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

import signal

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

signal.signal(signal.SIGINT, sigint_handler)

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

按ctrl+c将引发键盘中断

捕捉键盘中断并从中打印消息,或者像上面一样使用状态变量


请参阅:

按ctrl+c可引发键盘中断

捕捉键盘中断并从中打印消息,或者像上面一样使用状态变量


请参阅:

这是可以做到的。
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

这是可以做到的。
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以外的键来中断吗?我注意到现在我不能终止程序,所以我想分配一个不同的键来中断。有许多控制序列可以产生发送到前台程序的信号。
signal
库允许您将处理程序绑定到键盘可以发送的任何信号。也就是说,当ctrl-C绑定到调试函数时,您仍然可以使用ctrl-\。这是一个鲜为人知的发送SIGQUIT的kill命令。它触发一个内核转储,如果你正在编程C或C++,但是W/E,使用这个方法,我可以指定使用一个除了Ctrl +C之外的密钥来中断吗?我注意到现在我不能终止程序,所以我想分配一个不同的键来中断。有许多控制序列可以产生发送到前台程序的信号。
signal
库允许您将处理程序绑定到键盘可以发送的任何信号。也就是说,当ctrl-C绑定到调试函数时,您仍然可以使用ctrl-\。这是一个鲜为人知的发送SIGQUIT的kill命令。它触发一个内核转储,如果你正在编程C或C++,这将是有用的,但是W/E同样的问题我问Kernonnes:使用这个方法,我可以指定使用一个除了Ctrl +C之外的密钥来中断吗?我注意到现在我不能终止这个程序,所以我想为中断分配一个不同的键。你不能为SIGINT使用另一个键。当然,您可以使用另一个信号并使用
kill
命令从命令行发送它(假设您在Linux上)。我问Kernonnes的问题是:使用此方法,我可以指定使用CTRL+C以外的键来中断吗?我注意到现在我不能终止这个程序,所以我想为中断分配一个不同的键。你不能为SIGINT使用另一个键。当然,您可以使用另一个信号并使用
kill
命令从命令行发送它(假设您在Linux上)。