运行时我有一个线程,它有一个无限循环。 当另一个线程停止时,我希望再次重置所有线程, 线程具有在彼此之间传输数据的套接字。 我正在使用
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函数是否适用于线程,因为我有一个套接字的超时子句,如果它没有收到打印超时的任何内容。发生错误后打印。
什么是更好的线程/套接字重置
答案 0 :(得分:0)
我不确定你在找什么。不过,我建议您查看相关问题answer。
重要的一点是,当一个线程持有像你的情况一样的套接字之类的资源时,终止一个线程并不是一个好主意。正确的方法是使用任何同步机制(上面引用的答案使用threading.Event
的示例,但如果它更适合您的需要,它可以是threading.Condition
)可以释放资源,或者根据需要重置一些内部数据,从头开始。
我希望这会有所帮助。