我正在使用scapy在python中实现多线程网络扫描程序。我想退出keyboardInterrupt上的所有线程。我已设法补充以下代码,但并非所有线程都在引发异常时退出。我有以下代码处理线程并捕获异常。 感谢
答案 0 :(得分:1)
这只是一个小小的注释。
通常情况下,KeyboardInterrupt
将在主线程中提升,从而使您可以执行以下操作:
import threading
main = None
for t in threading.enumerate():
if t.name == 'MainThread':
main = t
while main.isAlive():
...
每当主线程死亡时,哪个会破坏循环。 您还可以枚举主循环中的线程数并终止主进程,并使用此主线程检查有效地终止所有线程。
或者你可以有一个错误标志,所有线程都可以监听。 一旦引发异常,错误标志将向所有其他线程指示发生了错误并且是时候关闭了。