在本教程中,我们将向您介绍多线程的概念,以及如何用 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()
方法。
因此,当前程序将等待t1
和t2
的完成,并且只有在它们的执行完成之后,当前程序的剩余语句才会被执行,即语句print('Execution completed.')
。
在注释掉第 16、17 行的代码后,您应该尝试运行上面的代码一次,我们使用join
方法查看结果。
至此,我们对 python 多线程的基本介绍已经完成,现在我们知道如何在 python 中创建和启动多线程。