您的位置:

13. Python 多线程介绍

Python 多线程介绍

更新:

在本教程中,我们将向您介绍多线程的概念,以及如何用 python 编程语言实现线程。让我们从理解什么是线程开始。


线

线程是轻量级进程(大型进程的子进程),可以并行运行,每个线程都可以执行一些任务。线程通常包含在进程中。同一进程中可以存在多个线程。在同一个进程中,线程共享内存和进程的状态。

螺纹类型

有两种线程:

  • 内核级线程
  • 用户级线程

下面我们解释了两者之间的一些区别:

| 内核级线程 | 用户级线程 | | 被操作系统识别。 | 操作系统无法识别。 | | 由操作系统实现。 | 由系统用户实现。 | | 实现是复杂的。 | 实现简单易行。 | | Solaris 就是一个例子 | Posix 就是一个例子 | | 需要硬件支持 | 不需要硬件支持 |


什么是多线程?

现在我们已经对什么是线程有了一个基本的概念,让我们试着理解多线程的概念。

现代计算机的中央处理器有多个处理核心,每个核心可以同时运行多个线程,这使我们能够同时执行几个任务。这个并发运行多个线程并行执行任务的过程叫做多线程。

多线程提供了以下好处:

  • 一个进程中的多个线程共享相同的数据空间,因此可以比单独的进程更容易地共享信息或相互通信。

  • 线程不需要太多内存开销;就内存需求而言,它们比进程便宜。

  • 多线程程序可以在具有多个 CPU 的计算机系统上运行得更快,因为这些线程可以同时执行。

举个例子

假设您创建了一个简单的活动注册应用,如果参与者希望参加活动,他们必须注册。您有一个简单的 HTML 表单供用户填写,还有一个后端,它是一个单线程应用。

由于应用是单线程的,它一次只能处理一个请求。但是,如果这个活动是一场“酷玩音乐音乐会”,有数百万人想要注册,那该怎么办。一次处理一个请求会大大降低性能。

因此,我们使应用多线程化,并在其中启动多个线程,从而允许并行处理。


Python 中的多线程

在 Python 中执行多线程使用threading模块。threading模块提供了几种函数/方法,可以在 python 中轻松实现多线程。

在我们开始使用threading模块之前,我们想首先向您介绍一个名为time的模块,它提供了一个time()ctime()等函数,我们将经常使用这些函数来获取当前系统时间,以及另一个关键函数sleep(),该函数用于在给定的秒数内暂停当前线程的执行。

例如,

现在让我们看看如何使用threading模块启动多个线程。

Code Example:

让我们试着理解上面的代码:

我们使用import threading语句导入了thread类,并且还导入了time模块。为了创建一个新的线程,我们创建了一个 te Thread类的对象。它采用以下参数:

target:线程将要执行的功能。

args:要传递给目标函数的参数。我们可以传递多个用逗号分隔的参数。

在上面的例子中,我们创建了两个具有不同目标函数的线程,即thread1(i)thread2(i)

为了开始一个线程,我们使用了Thread类的start()方法。

我们还使用了time模块的time.sleep()方法暂停thread1的执行 3 秒钟。

一旦线程启动,当前程序(您可以将其视为主线程)也会继续执行。为了防止主程序在线程执行完成之前完成其执行,我们使用join()方法。

因此,当前程序将等待t1t2的完成,并且只有在它们的执行完成之后,当前程序的剩余语句才会被执行,即语句print('Execution completed.')

在注释掉第 16、17 行的代码后,您应该尝试运行上面的代码一次,我们使用join方法查看结果。

至此,我们对 python 多线程的基本介绍已经完成,现在我们知道如何在 python 中创建和启动多线程。