当前位置: 首页 > 图灵资讯 > 行业资讯> 什么是线程(多线程),Python多线程的好处

什么是线程(多线程),Python多线程的好处

发布时间:2025-10-14 17:54:03

几乎所有的操作系统都支持同时运行多个任务。一个任务通常是一个程序,每个操作中的程序都是一个过程。当一个程序运行时,它可能包含多个顺序执行流,每个顺序执行流是一个线程。

线程和进程

几乎所有的操作系统都支持过程的概念,运行中的所有任务通常对应一个过程(Process)。当一个程序进入内存运行时,它将成为一个过程。该过程是一个在运行过程中具有一定独立功能的程序。该过程是系统分配和调度资源的独立单位。

一般来说,过程包括以下三个特点:

独立性:过程是系统中独立存在的实体。它可以拥有自己的独立资源,每个过程都有自己的私人地址空间。未经流程本身允许,用户流程不能直接访问其他流程的地址空间。

动态:过程和程序之间的区别在于,程序只是一个静态的指令集,而过程是一个在系统中活动的指令集。在这个过程中添加了时间的概念。这个过程有自己的生命周期和不同的状态,在这个过程中没有这些概念。

并发性:多个过程可以在单个处理器上并发执行,多个过程不会相互影响。

并发(Concurrency)和并行(Parallel)这是两个概念,多个指令同时在多个处理器上执行;并发旨在同时只执行一个指令,但快速轮换执行多个过程指令,具有多个过程同时执行的宏观效果。

大多数操作系统支持多过程并发执行,现代操作系统几乎支持多个任务同时执行。例如,程序员打开开发工具来编写程序,同时打开参考手册供参考,并使用电脑播放音乐。此外,每台计算机在运行时都有大量的底层支持程序。这些过程似乎同时工作。

但事实是,对于一个 CPU 在某个时间点,它只能执行一个程序。也就是说,只能运行一个过程,CPU 在这些过程之间不断轮换执行。那为什么用户感觉不到任何中断呢?

这是因为对人的感觉,CPU 执行速度太快(如果启动程序足够多,用户仍然可以感觉到程序运行速度下降)。所以,尽管如此 CPU 在多个过程之间轮换执行,但用户感觉多个过程同时执行。

现代操作系统支持多过程并发执行,但由于硬件和操作系统的不同,具体实现细节可能会采用不同的策略。更常见的策略是:

多任务共享操作策略,如 Windows 3.1 和 Mac OS 9 操作系统采用这种策略;

抢占式多任务操作策略效率更高。目前大多数操作系统都采用这种策略,比如 Windows NT、Windows 2000 以及 UNIX/Linux 等待操作系统。

多线程扩展了多过程的概念,使同一过程能够同时处理多个任务。线程(Thread)又称轻量级过程(Lightweight Process),线程是过程的执行单元。线程是程序中独立并发的执行流,就像过程在操作系统中的地位一样。

当过程初始化时,创建了主线程。对于大多数应用程序来说,通常只需要一个主线程,但也可以在过程中创建多个顺序执行流。这些顺序执行流是线程,每个线程都是独立的。

线程是过程的一部分。一个过程可以有多个线程,一个线程必须有一个父亲的过程。线程可以有自己的堆栈、程序计数器和局部变量,但没有系统资源。它与父亲过程中的其他线程共享过程中的所有资源。编程更方便,因为多个线程共享父亲过程中的所有资源;但必须更加小心,因为有必要确保线程不会阻碍同一过程中的其他线程。

线程可以完成某些任务,可以与其他线程共享父亲过程中的共享变量和某些环境,并与未完成过程的任务相协调。

线程是独立运行的,不知道过程中是否还有其他线程。线程的运行是抢占式的,也就是说,当前运行的线程可以随时悬挂,以便另一个线程可以运行。

一个线程可以创建和取消另一个线程,同一过程中的多个线程可以并发运行。

从逻辑的角度来看,多线程存在于一个应用程序中,因此一个应用程序可以同时执行多个执行部分,但操作系统不需要将多个线程视为多个独立应用程序,以实现多线程的调度和管理,以及资源分配。线程的调度和管理由过程本身完成。

简而言之,程序运行后至少有一个过程,在一个过程中可以包含多个线程,但至少有一个主线程。

综上所述,操作系统可以同时执行多个任务,每个任务是一个过程,过程可以同时执行多个任务,每个任务是一个线程。

多线程的好处

线程是程序中独立并发的执行流。与分离过程相比,线程之间的隔离程度较小,它们共享内存、文件句柄和其他过程的状态

由于线程的划分规模小于过程,多线程序的并发性很高。该过程在执行过程中有独立的内存单元,多线程共享内存,大大提高了程序的运行效率。

线程比流程具有更高的性能,因为同一流程中的线程具有多个线程共享同一流程的共同虚拟空间。线程共享环境包括流程代码段、流程公共数据等。使用这些共享数据,线程之间的通信很容易实现。

在创建过程时,操作系统必须为过程分配独立的内存空间和大量相关资源,但创建线程要简单得多。因此,使用多线程实现并发性远高于使用多过程。

综上所述,多线程编程的使用具有以下优点:

内存不能在过程之间共享,但在线程之间共享内存非常容易。

在创建过程时,操作系统需要重新分配系统资源,但创建线程的成本要低得多。因此,使用多线程实现多任务并发执行比使用多过程更有效。

Python 语言内置多线程功能支持,而不仅仅是作为底层操作系统的调度,从而简化 Python 多线程编程。

多线程在实际应用中非常有用。例如,浏览器必须能够同时下载多张图片;一个 Web 多个用户请求必须同时响应服务器;图形用户界面(GUI)应用程序还需要启动单独的线程,从主机环境中收集用户界面事件...简而言之,多线程广泛应用于实际编程中。

相关文章

什么是线程(多线程),Python多线程的好处

什么是线程(多线程),Python多线程的好处

2025-10-14
Python之什么叫面向对象

Python之什么叫面向对象

2025-10-14
Python创建线程

Python创建线程

2025-10-14
Python守护线程及作用

Python守护线程及作用

2025-10-13
Python sleep函数用法:线程睡眠

Python sleep函数用法:线程睡眠

2025-10-13
面向对象之深度优先和广度优先

面向对象之深度优先和广度优先

2025-10-13