在此脚本中:
import threading, socket
class send(threading.Thread):
def run(self):
try:
while True:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((url,port))
s.send(b"Hello world!")
print ("Request Sent!")
except:
s.close()
except KeyboardInterrupt:
# here i'd like to kill all threads if possible
for x in range(800):
send().start()
是否可以杀死KeyboardInterrupt以外的所有线程?我已经在网上搜索了,是的,我知道它已经被问到了,但我在python中真的很新,而且我在堆栈上问这些其他问题的方法并不顺利
答案 0 :(得分:1)
没有。单个线程不能被强行终止(它不安全,因为它可能会保留锁定,导致死锁等)。
这样做的两种方法是:
daemon
线程启动,主线程在Event
/ Condition
上等待,并在其中一个线程设置Event
时立即退出通知Condition
。一旦(唯一的)非daemon
线程退出,结束所有daemon
线程Event
,以便它们在设置后立即合作退出。