Python 多线程基础与实战详解
1. 什么是多线程?
在计算机操作系统中,多任务处理是指系统同时执行多个任务的能力。进程(Process)是资源分配的最小单位,而线程(Thread)是 CPU 调度的最小单位。一个进程可以包含多个线程,这些线程共享进程的资源(如内存空间、文件句柄等),但拥有独立的栈空间和寄存器状态。
在 Python 中,多线程允许程序在同一时间片内交替执行多个任务,从而提高程序的响应速度和吞吐量,特别是在涉及大量 I/O 操作(如网络请求、文件读写)的场景下。通过并发执行,程序可以在等待某个耗时操作完成的同时处理其他逻辑,避免阻塞主流程。
2. 何时使用多线程?
并非所有场景都适合多线程。由于 Python 的全局解释器锁(GIL)机制,多线程在 CPU 密集型任务中并不能真正利用多核 CPU 的优势,甚至可能因为上下文切换开销导致性能下降。
适用场景:
- I/O 密集型任务:如网络爬虫、数据库查询、文件读写。线程在等待 I/O 完成时会释放 GIL,允许其他线程运行。
- GUI 应用程序:防止主界面因后台计算而卡死。
- 服务器端应用:处理高并发的客户端连接请求。
不适用场景:
- CPU 密集型任务:如大规模数值计算、图像处理。建议使用
multiprocessing模块来绕过 GIL。 - 简单脚本:如果任务本身很快,引入线程的开销可能大于收益。
3. 如何在 Python 中创建线程?
Python 标准库提供了 threading 模块来处理多线程。无需额外安装,直接导入即可。
方法一:继承 Thread 类
这是最面向对象的方式。通过继承 threading.Thread 并重写 run 方法来定义线程逻辑。这种方式适合需要维护线程状态或复用的场景。
import threading
import time
class MyThread(threading.Thread):
def __init__(self, name):
super().__init__()
self.name = name
def run(self):
print(f"{self.name} 开始运行")
time.sleep(2)
print(f"{self.name} 运行结束")
# 创建并启动线程
t1 = MyThread("线程 A")
t2 = MyThread("线程 B")
t1.start()
t2.start()
t1.join()
t2.join()
()


