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 中创建和启动多线程。


原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/290880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-24 13:14
下一篇 2024-12-24 13:14

相关推荐

  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29

发表回复

登录后才能评论