在python中的keyboardInterrupt上退出线程

时间:2014-02-05 11:51:02

标签: python multithreading scapy

我正在使用scapy在python中实现多线程网络扫描程序。我想退出keyboardInterrupt上的所有线程。我已设法补充以下代码,但并非所有线程都在引发异常时退出。我有以下代码处理线程并捕获异常。 感谢

1 个答案:

答案 0 :(得分:1)

这只是一个小小的注释。 通常情况下,KeyboardInterrupt将在主线程中提升,从而使您可以执行以下操作:

import threading
main = None
for t in threading.enumerate():
    if t.name == 'MainThread':
        main = t
while main.isAlive():
    ...

每当主线程死亡时,哪个会破坏循环。 您还可以枚举主循环中的线程数并终止主进程,并使用此主线程检查有效地终止所有线程。

或者你可以有一个错误标志,所有线程都可以监听。 一旦引发异常,错误标志将向所有其他线程指示发生了错误并且是时候关闭了。