2012-02-21 125 views
0

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

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. 

我不确定停止函数是否对线程起作用,因为我有一个套接字的超时子句,如果它没有收到任何要打印的超时时间。此错误发生后打印。

这将是一个线程/插座

回答

0

更好复位我不知道什么是你想要的。不过,我建议你看看这个answer的相关问题。

重要的一点是,当你持有一个像socket这样的资源时,终止一个线程并不是一个好主意。正确的做法是使用任何同步机制(上面引用的答案使用threading.Event的示例,但如果它更适合您的需求,它可能是例如threading.Condition)可用于释放资源,因为它似乎你需要,重置一些内部数据从头开始。

我希望这会有所帮助。

+0

这是我在写这个问题之前实际看到的第一件事,我认为他的回答太复杂了,我不希望有什么。我只是简单地希望完全终止或删除线程和套接字。我不需要保存任何东西。 – DustBunny 2012-02-21 22:57:06

+0

@ user1009731如果您没有明确关闭套接字,它将一直保持,直到操作系统级别的定时器到期。因此,您将无法在一段时间内重新打开套接字。恐怕你需要实现一些线程同步来关闭那个套接字,即使你不需要保持任何状态。 – jcollado 2012-02-22 07:31:41