Как из второстепенного потока завершить основной поток программы?
Написал простой чат на питон. Хочу что при вводе /exit чат прекращал работу. Но программа продолжает работать при вызове sys.exit() из второго потока. Как мне из второстепенного потока завершить вообще все потоки? Получалось через os._exit, но в таком случая возможна утечка памяти. Хотелось бы через sys.exit import socket import threading import sys
def getbytes():
while s:
msg = client.recv(1024)
if msg.decode("utf-8").lower()=="/exit":
print("\nDawn closed connection")
global caa
caa = True
s.close()
sys.exit(0)
print("\nFrom dawn: "+msg.decode("utf-8")+"\nTo dawn: ",end="")
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#TCP протокол будет работать без TIME_WAIT при FYN
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind(("0.0.0.0",1234))
s.listen(5)
client,ipaddr = s.accept()
caa = False
myserver = threading.Thread(target=getbytes,)
myserver.start()
while True:
if caa:
sys.exit(0)
ss = input("To dawn: ")
client.send(bytes(ss,encoding="utf-8"))
if ss.lower() == "/exit":
print("You closed connection")
s.close()
sys.exit(0)