1. 概念
- 并发与并行
并发:宏观上并行,微观上串行。
并行:宏观上并行,微观上并行
- I/O密集型作业与CPU密集型作业
I/O密集型作业:对应并发,作业不需要cpu满负荷工作,有时间处于等待状态,如常写的sleep方法,这时cpu可以去做其他作业,所以微观上串行,宏观上并行。
CPU密集型作业:对应并行,作业需要cpu充分使用,很少有空闲状态。
2. python多线程
- python由于GIL(全局解释器锁)的限制,任意时刻只有一个程序在运行。
- 多线程更适合于I/O密集型作业,虽然只有一个线程在运行,但其他线程本身处于程序中等待状态,实现并发。
- 对于CPU密集型作业,让CPU 的其他内核来执行,需要多进程。
3. 相关模块
模块 | 描述 |
---|---|
threading | 高级别的线程和同步对象 |
multiprocessing | 使用“threading”接口派生/使用子进程 |
concurrent.futures | 异步执行的高级别库 |
- concurrent.futures(python3.2版本引入)
ThreadPoolExecutor 用于线程,ProcessPoolExecutor 用于进程