Python 并发编程的方式#

一个进程中可以启动N个线程,一个线程中可以启动N个协程。

多进程 Process (multiprocessing)#

  • 优点:可以利用多核CPU并行运算

  • 缺点:占用资源最多,可以启动的数目比线程少

  • 适用于:CPU密集型计算

多线程 Thread (threading)#

  • 优点:相比进程,更轻量级,占用资源少

  • 缺点:

    • 相比进程:多线程只能并发执行,不能利用多CPU(GIL)

    • 相比协程:启动数目有限制,占用内存资源,有线程切换开销

  • 适用于:IO密集型计算,同时运行的任务数目要求不多

多协程 Coroutine (asyncio)#

  • 优点:内存开销最少,启用协程数量最多

  • 缺点:支持的库有限制(aiohttp vs requests),代码实现复杂

  • 适用于:IO密集型计算,需要超多任务运行,但有现成库支持的场景