:어떻게 모든 스레드를 죽일 수 있습니까? 이 스크립트에서
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의 제외하고 모든 스레드를 죽일 수 있습니까? 나는 그물을 검색했고 그래, 이미 물었다는 것을 알고 있지만, 나는 파이썬으로는 정말 새롭다. 그리고 나는이 다른 질문에 대한 방법이 너무 복잡해지지 않았다.
당신은 모든 스레드를 죽이고 싶습니다 ... 이것은 주 스레드를 포함하고 결과적으로 응용 프로그램입니까? 그렇다면 간단히 모든 스레드 [daemons] (https://docs.python.org/3.4/library/threading.html#threading.Thread.daemon)를 만들고 나서 종료하고 싶다면'sys.exit ()'. – CristiFati
@CristiFati :'KeyboardInterrupt'가 스레드 중 하나 (기본적으로 무작위 IIRC 인 스레드)에 전달되면 도움이되지 않습니다. 따라서 적절한 시간에 '종료'할 수 있도록 주 스레드에 경고 할 필요가 있습니다. – ShadowRanger
오른쪽 @ShadowRanger, 그것을 지적 해 주셔서 감사합니다, 스레드는 예외를 삼키는 경향이 있습니다. 참고로 스레드를 처리 할 때 역방향 접근 방식을 사용합니다. 스레드의 루프에서 키를 누른 경우 (논리를 키를 기준으로 확장 할 수 있음) 끝내십시오. – CristiFati