编程语言基础
2026/1/30大约 1 分钟
编程语言基础
Python GLI锁 掌握
GIL 是 CPython 解释器的一把互斥锁,同一时刻仅允许一个线程执行 Python 字节码,即使在多核 CPU 上,Python 多线程也无法实现真正的并行(仅能并发)。
为什么 Python 保留 GIL?
简化 CPython 的内存管理(避免多线程内存竞争);
GIL 的影响?
① 多线程在 CPU 密集型任务中无性能提升(甚至因线程切换开销变慢);② 多线程在 IO 密集型任务(如网络请求、文件读写)中仍有效(线程等待 IO 时释放 GIL);③ 多进程可绕过 GIL(每个进程有独立解释器和 GIL)。
Python async 掌握
核心定义
async def:定义异步函数(协程),函数执行时不会阻塞主线程;await:挂起协程执行,等待异步任务(如 IO)完成,此时事件循环可调度其他协程;- 事件循环(Event Loop):asyncio 的核心,负责调度协程、管理 IO 事件,是 “单线程并发” 的核心。
- 协程最大的优势在于用单个线程模拟多个线程并发
使用场景
耗时的IO操作:网络请求、文件读写、数据库查询(这些操作通常需要等待响应,导致程序阻塞),使用asyncio可以在等待时执行其他任务
async vs 多线程?
① 相同点:均适用于 IO 密集型;② 不同点:async 是 “用户态协程”,切换开销远小于线程(内核态),高并发下(如 10w + 请求)性能更优;③ 注意:async 需配套异步库(如 aiohttp 而非 requests)。