python:如何取消阻止使用recvfrom的脚本

2024-04-16 13:51:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中使用客户端通过UDP连接套接字。我有两条线。在键盘中断之后,第一个线程仍然在等待通过recvfrom的连接。在

(...)

udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

(...)

udp.shutdown(socket.SHUT_RDWR) # Does not work
udp.close() # Does not work

我有一个所有线程共享的全局变量,我在键盘中断后更新这个值。但线不会闭合。在

我怎样才能退出这个线程?在

提前谢谢。在


Tags: 客户端notsocket键盘线程worksockudp
1条回答
网友
1楼 · 发布于 2024-04-16 13:51:34

你可能需要澄清一下,但这是我从你的问题中了解到的。如果您的键盘中断杀死了第一个线程,并且您需要在发生这种情况时关闭成对线程,那么您应该考虑使用daemon thread.这将保证父线程完成后这些线程的结束。但是,如文件所述:

Daemon threads are abruptly stopped at shutdown. Their resources (such as open files, database transactions, etc.) may not be released properly. If you want your threads to stop gracefully, make them non-daemonic and use a suitable signalling mechanism such as an Event.

Events只不过是在线程之间使用的信号。就像状态标志一样,您可以检查事件是否已“设置”,并在线程内完成执行之前采取适当的预防措施来处理资源。在

相关问题 更多 >