Python 标准库为我们提供了 threading 和 multiprocessing 模块编写相应的多线程 / 多进程代码,但是当项目达到一定的规模,频繁创建 / 销毁进程或者线程是非常消耗资源的,这个时候我们就要编写自己的线程池 / 进程池,以空间换时间。但从 Python3.2 开始,标准库为我们提供了 concurrent.futures 模块,它提供了 ThreadPoolExecutor 和 ProcessPoolExecutor 两个类,实现了对 threading 和 multiprocessing 的进一步抽象,对编写线程池 / 进程池提供了直接的支持。