thread - python键盘中断




使用ctrl+c停止python (6)

ctrl + q会立即停止运行代码并关闭所有窗口。

我有一个python脚本,它使用线程并发出大量的HTTP请求。 我认为发生的事情是,当一个HTTP请求(使用urllib2)正在读取时,它会阻止并且不响应Ctrl C来停止程序。 有没有办法解决?


中断过程是硬件和操作系统相关的。 所以你将会有非常不同的行为,这取决于你在哪里运行你的python脚本。 例如,在Windows机器上,我们有Ctrl + CSIGINT )和Ctrl + BreakSIGBREAK )。

所以尽管SIGINT在所有系统上都存在并且可以被处理和捕获,但SIGBREAK信号是Windows专用的(并且可以在CONFIG.SYS中禁用),并且由BIOS作为中断向量INT 1Bh真正处理,这就是为什么此键比其他任何东西都强大得多。 所以如果你使用的是一些* nix风格的操作系统,你会得到不同的结果,这取决于实现,因为那个信号不存在于那里,但其他的都是。 在Linux中,您可以通过以下方式检查可用信号:

$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGEMT       8) SIGFPE       9) SIGKILL     10) SIGBUS
11) SIGSEGV     12) SIGSYS      13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGURG      17) SIGSTOP     18) SIGTSTP     19) SIGCONT     20) SIGCHLD
21) SIGTTIN     22) SIGTTOU     23) SIGIO       24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGPWR      30) SIGUSR1
31) SIGUSR2     32) SIGRTMAX

所以如果你想在Linux系统上捕获CTRL+BREAK signal ,你必须检查他们已经映射了哪个键的POSIX信号 。 流行的映射是:

CTRL+\     = SIGQUIT 
CTRL+D     = SIGQUIT
CTRL+C     = SIGINT
CTRL+Z     = SIGTSTOP 
CTRL+BREAK = SIGKILL or SIGTERM or SIGSTOP

事实上,在Linux下可以使用更多的功能,其中SysRq (系统请求)密钥可以承担其自身的生命 ...


在Mac上按下:

“控制”+“\”

退出连接到终端的python进程。


在Windows上,唯一可行的方法是使用Ctrl Break 。 立即停止每个Python脚本!

(请注意,在某些键盘上,“Break”标记为“暂停”。)


如果它在Python shell中运行,使用Ctrl + Z ,否则找到python进程并杀死它。


这篇文章是旧的,但我最近遇到了同样的问题, CTRL+C没有终止我的Linux上的Python脚本。 我使用了CTRL + \SIGQUIT )。





python