Python 我是否可以在继续进程的同时利用中断打印状态?
在python中,是否可以使用KeyboardInterrupt或CTRL+C打印状态消息,可能类似于打印变量的内容,然后继续执行? 还是中断总是会扼杀进程 我想做的一个例子: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
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上)。