Как из второстепенного потока завершить основной поток программы?

Написал простой чат на питон. Хочу что при вводе /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)

Ответы (0 шт):