在仍然是isAlive时替换线程实例

时间:2011-12-12 19:19:04

标签: python multithreading

我有一个python线程,分配给变量名xx,当它完成其'run function触发回调时。

回调最终会尝试使用变量名xx创建该线程的新实例,从而有效地重新启动线程。

当然,检查xx.isAlive()会返回True(因为它启动了回调并且没有到达其堆栈的底部)。由于xx仍然存在,替换xx似乎是一个坏主意。

有一种方法可以在重新创建xx之前等待片刻(例如gobject.idle_add)以便运行函数完成吗?或者,我是否应该担心为xx分配一个新的线程实例,因为原始线程在触发回调以重新创建自身的时候仍然像完成一样好?

2 个答案:

答案 0 :(得分:4)

在不了解你的情况的细节的情况下,我的下意识反应就是说,不要重新创建线程 - 重用已建立的线程。重用已建立的线程所花费的时间比关闭它并开始新线程所花费的时间要短。

答案 1 :(得分:1)

我投票支持unubtu的回答。但是如果您不能使用这种情况:

您不必关心变量xx。只需为其指定一个新对象即可。重新分配变量不会影响当前(仍在运行)的线程。无论如何,如果我没有错,你不打算再使用那个变量与当前正在运行的线程取得联系...