在 Python 中连接线程

pythonserver side programmingprogramming

在 Python 中连接线程:简介

在 Python 中使用线程允许在单个程序中同时执行多个进程。通过利用当代 CPU 的多个核心,线程编程可以使您的应用程序运行得更快。在本文中,我们将专注于 Python 线程连接机制。Python 线程中的一个关键思想是连接线程。它使主线程可以延迟结束程序,直到所有其他线程都完成运行。在 Python 中,使用"join()"函数连接线程。

连接线程

定义

线程是一条可以与其他线程同时运行的唯一执行路径。在 Python 中,执行"threading.Thread()"函数会创建一个新线程。在线程形成时,会将要执行的函数提供给线程。在完成之前,该函数将继续与主线程并行运行。 "threading"模块包含一个名为"join()"的内置方法,该方法允许主线程等待子线程完成运行。当线程加入时,主线程将暂停执行并等待子线程完成。

语法

thread.join(timeout=None)

解释

"thread" - 此参数表示您要加入的"Thread"对象。

"timeout" - 此可选参数设置等待线程完成的时间(以秒为单位)。如果线程未在分配的延迟时间内完成,则主线程将恢复执行。当使用"None"作为默认选项时,主线程将无限期地等待子线程完成。 "timeout"参数是可选的,表示等待线程完成的时间。如果线程未在分配的延迟时间内完成,则主线程将恢复执行。

算法

  • 步骤 1 - 创建一个 Thread 对象并为其分配一个函数。

  • 步骤 2 - 通过调用 Thread 对象上的 start() 方法启动线程。

  • 步骤 3 - 调用 Thread 对象上的 join() 方法等待线程完成。

  • 步骤 4 - 如果线程未在指定的超时时间内完成,则根据需要处理超时。

  • 步骤 5 - 继续主线程的执行。

方法

  • 方法 1 - join() 方法无限等待线程

  • 方法 2 - join() 方法最多等待线程 2 秒。

方法 1:join() 方法无限等待线程

在此示例中,创建了一个线程并执行了 my_function() 函数。在 Thread 对象上,join() 方法用于等待线程完成,而 start() 方法启动线程。程序的输出将是 -

示例

import threading
import time

def my_function():
   print("Starting my_function...")
   time.sleep(5)
   print("Ending my_function...")

t = threading.Thread(target=my_function)

t.start()

print("Before join...")
t.join()
print("After join...")

输出

Starting my_function...
Before join...
After join...
Thread is still running.
Ending my_function...

在方法 1 中,使用 join() 方法时没有传递超时参数。这意味着主线程将一直等待,直到子线程完成。子线程完成后,主线程将继续运行。当您想确保子线程在继续执行主线程之前完成时,此方法很有用。

方法 2:join() 方法等待线程最多 2 秒。

在此示例中,创建了一个线程并执行了 my_function() 函数。通过调用 Thread 对象上的 start() 函数启动线程,并超时执行 join() 方法。

示例

import threading
import time

def my_function():
   print("Starting my_function...")
   time.sleep(5)
   print("Ending my_function...")

t = threading.Thread(target=my_function)

t.start()

print("Before join...")
t.join(2)
print("After join...")

if t.is_alive():
   print("Thread is still running.")
else:
   print("Thread has completed.")

输出

Starting my_function...
Before join...
After join...
Thread is still running.
Ending my_function...

线程需要第二个等待期才能完成。如果线程在 2 秒内未完成,程序将继续运行。然后通过调用 is_alive() 函数检查线程的状态。程序的输出如上所示。程序继续运行,因为线程未在 2 秒超时内完成,并且 is_alive() 方法显示线程仍处于活动状态。

结论

总之,线程编程中的一个关键思想是在 Python 中连接线程。它使主线程可以延迟结束程序,直到所有其他线程都运行完毕。Python 的 join() 方法用于 Thread 对象,用于合并线程。join() 方法的 timeout 参数是可选的,表示等待线程完成的时间。我们相信本文可以让您更好地了解 Python 如何合并线程。

总结一下方法,方法 1 需要无限长的时间才能完成子线程,但方法 2 最多只需等待两秒钟即可开始执行主线程。您选择采用哪种方法将取决于您的独特要求和程序的构成。


相关文章


有用资源