首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >强制终止python脚本

强制终止python脚本
EN

Stack Overflow用户
提问于 2020-10-03 16:57:23
回答 1查看 42关注 0票数 0

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

示例如下:

代码语言:javascript
运行
AI代码解释
复制
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()

有什么办法解决这个问题吗?

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-03 17:46:26

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64186769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档