前言
本文将简要介绍 Python 多线程的核心概念、使用场景及实现方法。
- 什么是 Python 中的多线程?
- 何时在 Python 中使用多线程?
- 如何在 Python 中实现多线程?
- 使用多线程的优点
首先,让我们尝试理解多任务处理,然后再学习 Python 中的多线程。
Python 中的多任务处理是什么?
一般来说,多任务处理是一种同时执行多项任务的能力。在技术上,多任务处理是指操作系统同时执行不同任务的能力。例如,你在电脑上下载文件、听歌、同时玩游戏等。所有这些任务都由同一个操作系统同步执行。这不仅能节省时间,还能提高工作效率。
在操作系统中有两种类型的多任务处理:
- 以进程为基础
- 以线程为基础
本文将重点讲解基于线程的多任务(即多线程)。
什么是线程?
线程基本上是一个独立执行的流程。单个进程可以由多个线程组成。程序中的每个线程都执行特定的任务。例如,当你在电脑上玩游戏时,整个游戏是一个单一的过程,但它由几个线程组成,负责播放音乐、接收用户输入、同步运行对手等。所有这些都是单独的线程,负责在同一个程序中执行不同的任务。
每个进程都有一个始终在运行的线程,这是主线程。这个主线程实际上创建子线程对象。子线程也由主线程启动。
什么时候在 Python 中使用多线程?
多线程非常有助于节省时间和提高性能,但它不能适用于任何地方。
在前面的示例中,音乐线程独立于接受输入的线程,而接受输入的线程独立于运行对手的线程。这些线程独立运行,因为它们不相互依赖。
因此,只有当单个线程之间的依赖关系不存在时,才能有效使用多线程。
如何在 Python 中实现多线程?
可以通过导入 threading 模块来实现。Python 的 threading 模块是标准库的一部分,无需额外安装。
可以使用以下命令导入线程模块:
import threading
from threading import *
现在已经安装了线程模块,让我们继续使用 Python 进行多线程处理。
方式一:使用目标函数(不创建类)
Python 中的多线程也可以在不创建类的情况下完成。下面是一个演示示例:
from threading import *
print(current_thread().getName())
def mt():
print("Child Thread")
child = Thread(target=mt)
child.start()
print("Executing thread name :", current_thread().getName())
输出:
MainThread
Child Thread
Executing thread name : MainThread
上面的输出显示,存在的第一个线程是主线程。然后,这个主线程创建一个执行函数的子线程,之后主线程再次执行最后的 print 语句。
方式二:通过扩展 Thread 类
当通过扩展 Thread 类创建子类时,子类表示一个新线程正在执行某些任务。在扩展 Thread 类时,子类只能覆盖两个方法,即 __init__() 方法和 方法。除了这两个方法之外,其他任何方法都不能被重写。


