基本概念
进程
进程是操作系统分配资源的最小单位,是程序在执行中的实例。每个进程拥有独立的内存空间和资源,运行时相互隔离。例如,启动微信或 Chrome 时,操作系统会为它们创建各自的进程。
进程的启动和管理需要较大的系统资源开销(如内存、CPU 时间),因为每个进程都有独立的地址空间和系统资源。
线程
线程是操作系统中最小的执行单元,依附于进程存在。一个进程可以包含多个线程,多个线程共享同一进程的资源(如内存)。
创建线程的资源开销较小,但如果多个线程同时被唤醒并争抢 CPU 资源,可能会导致惊群效应,即大量线程同时唤醒,增加系统负担并降低性能。
协程
协程是一种轻量级的并发机制,属于用户级别的任务切换技术。与线程不同,协程的切换由程序员控制,协程可以在执行过程中主动挂起并恢复执行,避免不必要的资源开销,尤其适合 I/O 密集型任务。
GIL
GIL 即 (Global Interpreter Lock) 全局解释器锁,它限制了 Python 在一个进程中同一时刻只有一个线程能执行 Python 字节码。这会影响 CPU 密集型任务的并行执行,导致 Python 在处理这类任务时无法充分利用多核 CPU,从而效率较低。
然而,对于数据库 CRUD 这类 I/O 操作,GIL 的影响较小,因为 I/O 操作时线程会释放 GIL,使其他线程可以继续执行。