多线程是Python中实现并发的常用手段,但需注意GIL(全局解释器锁)对多核并行的限制。以下是核心知识点:
1. 线程基础概念
- 线程:操作系统调度的最小单元,共享进程内存空间
- GIL:Python虚拟机中的全局锁,同一时间仅允许一个线程执行
- 线程安全:多个线程访问共享资源时需同步机制(如
threading.Lock
)
2. 典型应用场景
- 💻 I/O密集型任务(如网络请求、文件读写)
- 🧠 并行计算(通过
concurrent.futures
实现多线程) - 📡 服务端处理多个客户端请求
3. 实现方式
原生线程
import threading
def worker():
print("子线程运行中")
t = threading.Thread(target=worker)
t.start()
t.join()
线程池
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=5) as pool:
pool.map(task, data_list)
4. 注意事项 ⚠️
- 避免共享可变状态,使用
queue.Queue
进行线程间通信 - 使用
threading.Lock
/threading.RLock
控制临界区 - 优先考虑
asyncio
或multiprocessing
处理CPU密集型任务
5. 深入学习推荐
📌 提示:多线程适合I/O等待场景,CPU密集型任务建议使用多进程或异步框架