物无定味适口者珍,Python3 并发场景(CPU 密集/IO 密集)任务的并发方式的场景抉择(多线程 threading/多进程 multiprocessing/协程 asyncio)

刘悦 at 
一般情况下,大家对 Python 原生的并发/并行工作方式:进程、线程和协程的关系与区别都能讲清楚。甚至具体的对象名称、内置方法都可以如数家珍,这显然是极好的,但我们其实都忽略了一个问题,就是具体应用场景,三者的使用目的是一样的,换句话说,使用结果是一样的,都可以提高程序运行的效率,但到底那种场景用那种方式更好一点?这就好比,目前主流的汽车发动机变速箱无外乎三种:双离合、CVT 以及传统 AT。主机厂把它们搭载到不同的发动机和车型上,它们都是变速箱,都可以将发动机产生的动力作用到车轮上,但不同使用场景下到底该选择那种变速箱?这显然也是一个问题。所谓“无场景,不功能”,本次我们来讨论一下,具体的……