超时 = 0 的 Python 联接



我正在研究一个我自己没有写的代码。

我找到了以下代码行:thread.join(timeout=0.0)应用于threading.Thread对象。

这样一条线的目的是什么?

编辑:我的问题特别提到timeout=0。使用带有timeout=0join有什么目的吗?我的理解是,join目的是等待,因此使用timeout=0似乎有点矛盾。

超时基本上是指join线程结束的时间。因此,thread.join(timeout=0.0) 将在 0 秒后结束。但是,thread.join(timeout=1.0) 将在关闭之前运行一秒钟。现在,如果线程在超时到期后仍在运行,则加入调用结束,但线程继续运行。

至于.join(),这是导致主线程等待线程完成的原因。否则,您的线程将自行运行。

所以一种方式来思考.join()作为主线程上的"保持"——它会解除线程的线程,并在主线程中按顺序执行,然后主线程才能继续。它确保您的线程在主线程向前移动之前完成。请注意,这意味着如果您的线程在调用.join()之前已经完成,则可以 - 主线程只是在调用.join()时立即释放。

threading文档很好地解释了它:

timeout参数存在且未None时,它应该是一个浮点数,指定操作的超时(以秒为单位)(或其分数)。由于join()总是返回None,因此您必须在join()后调用is_alive()以确定是否发生了超时 - 如果线程仍处于活动状态,则join()调用超时。

实质上,timeout参数告诉join()等待线程完成多长时间。如果timeout规定的时间长度过期,则join()调用将结束,但线程将继续运行。这就是为什么您需要调用is_alive()来检查线程是否仍在运行。

timeout参数设置为0.0将在超时前等待 0.0 秒,因此,它将立即超时。所以要回答你的问题,不,打电话给join()和路过0.0真的没有意义,因为没有等待。

相关内容

  • 没有找到相关文章

最新更新