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

python:如何取消阻止使用recvfrom的脚本,python,sockets,python-multithreading,Python,Sockets,Python Multithreading,在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 我有一个所有线程共享的全局变量,我在键盘中断后更新这个值。但这根线不会闭合 如何退出

在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
我有一个所有线程共享的全局变量,我在键盘中断后更新这个值。但这根线不会闭合

如何退出此线程


提前谢谢。

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

守护进程线程在关闭时突然停止。他们的资源(如打开的文件、数据库事务等)可能无法正常释放。如果希望线程正常停止,请将其设为非守护线程,并使用适当的信号机制,如事件


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

最简单的方法是向其发送一个数据包:)感谢您的响应。我不知道这是否正确,我将线程设置为守护进程,然后在键盘中断后返回。节目结束了。