一、多线程与多进程
1.1 基本概念
- 进程:操作系统资源分配的基本单位,独立的内存空间,包含一个或多个线程。
- 线程:CPU调度的最小单位,共享进程资源,轻量级执行流。
- 多线程:同一进程内多个线程并发执行(如浏览器同时处理下载和渲染)。
- 多进程:多个独立进程并行执行(如同时运行多个Python脚本)。
1.2 进程与线程对比
维度 | 多进程 | 多线程 | 总结 |
---|---|---|---|
数据共享 | 数据隔离,需IPC(如管道、队列) | 共享进程内存,需同步机制(如锁) | 线程共享易,进程隔离强 |
资源开销 | 内存占用高,创建/销毁慢 | 内存占用低,创建/销毁快 | 线程更轻量 |
容错性 | 进程崩溃不影响其他进程 | 线程崩溃可能导致整个进程终止 | 进程更稳定 |
适用场景 | CPU密集型任务(如科学计算) | I/O密集型任务(如网络请求、文件读写) | 根据任务类型选择 |
1.3 线程库使用示例
-
import threadingclass CounterThread(threading.Thread):def __init__(self, name):super().__init__()self.name = nameself.count = 0def run(self): # 必须重写run方法for _ in range(100):self.count += 1print(f"{self.name}: {self.count}")# 创建并启动线程 t1 = CounterThread("Thread-1") t2 = CounterThread("Thread-2") t1.start() t2.start() t1.join() t2.join() print("主线程结束")
1.4 线程同步(补充)
-
锁机制:防止数据竞争。
lock = threading.Lock() def safe_increment():with lock:global countercounter += 1