Python线程重启

Python线程重启,python,multithreading,sockets,reset,Python,Multithreading,Sockets,Reset,我有一个线程,当它运行时,它有一个无限循环。 当另一个线程停止时,我希望再次重置所有线程, 这些线程具有在彼此之间传输数据的套接字。 我正在使用 node1._Thread__stop() 函数停止线程运行,但当我尝试创建具有相同名称的新线程时: node1 = node.node(8081,8082,token,1,"Node A",0) node1.start() 它给出了一个错误 [Errno 10048] Only one usage of each socket address (

我有一个线程,当它运行时,它有一个无限循环。 当另一个线程停止时,我希望再次重置所有线程, 这些线程具有在彼此之间传输数据的套接字。 我正在使用

node1._Thread__stop()
函数停止线程运行,但当我尝试创建具有相同名称的新线程时:

node1 = node.node(8081,8082,token,1,"Node A",0)
node1.start()
它给出了一个错误

[Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted.
我不确定stop函数是否在线程上工作,因为我有一个用于套接字的timeout子句,如果它没有收到任何内容,就可以打印timeout。这将在错误发生后打印


什么样的线程/套接字重置更好?我不确定你在找什么。然而,我建议你看看这个相关的问题

重要的一点是,在线程持有资源(如套接字)时终止线程并不是一个好主意。正确的方法是使用任何同步机制(上面提到的答案使用了
线程化.Event
的示例,但它可以是
线程化.Condition
,如果它更适合您的需要)来释放资源,或者,根据您的需要,重置一些内部数据以从头开始


我希望这能有所帮助。

这是我在写这个问题之前首先考虑的问题,我认为他的答案太复杂了,不符合我的要求。我只是希望完全终止或删除线程和套接字。我不需要保存任何内容。@user1009731如果不显式关闭套接字,它将一直打开,直到操作系统级别的计时器过期。因此,您暂时无法重新打开该套接字。恐怕您需要实现一些线程同步来关闭该套接字,即使您不需要保持任何状态。