强制终止python脚本

强制终止python脚本,python,multithreading,tkinter,while-loop,Python,Multithreading,Tkinter,While Loop,我正在编写一个带有服务器和客户端的应用程序,我想在关闭tkinter UI时停止服务器,但while循环等待server.accept()并且从不终止,即使使用sys.exit,它也在运行线程。顺便说一句,我正在gui close上运行一个函数,但它不想终止 以下是一个例子: while waiting_for_connection: # This is in a threaded function conn, addr = server.accept() # It's stuck on

我正在编写一个带有服务器和客户端的应用程序,我想在关闭tkinter UI时停止服务器,但while循环等待server.accept()并且从不终止,即使使用sys.exit,它也在运行线程。顺便说一句,我正在gui close上运行一个函数,但它不想终止

以下是一个例子:

while waiting_for_connection: # This is in a threaded function
    conn, addr = server.accept() # It's stuck on this line while waiting for connection
    thread = threading.Thread(target=handle_client, args=(conn, addr)) # Here it connects, but it doesn't reach the end of a loop if no one connects
    thread.start()
有办法吗


任何帮助都将不胜感激

服务器可能正在等待非守护进程线程退出,但它们没有退出,因为它们仍在等待活动套接字。您可以设置
thread.daemon=True
立即退出程序并让系统关闭套接字,也可以保留套接字列表,并通过
atexit.register注册的退出处理程序重置/关闭它们


通过让套接字通信通过某种优雅的终端,您可以在退出时变得更加有趣,但这取决于您使用的协议。例如,假设您希望服务器关闭等待所有当前数据发送。一个SIGTERM可能意味着优雅地完成手头的当前任务,然后退出。一个SIGABRT或者一行两个SIGINT可能意味着现在可以重置并退出。

请提供预期值。@Prune我编辑了我的帖子,看一看!对现在,也许客户机-服务器专家能够提供帮助。您在创建线程时是否设置了
daemon=True