简介
关于多进程和多线程的详细介绍参考其他资料,这里仅列出一些显著特征,用于帮助实际使用时选择哪种方法。
多线程
- 多线程之间共享内存和变量;
- 创建线程总体资源消耗较低;
- 由于GIL锁,只能使用单核,性能一般较低,特殊情况甚至低于串行;
- 适用于I/O密集型任务,比如大量文件读写,网络请求(文件下载)等;
多进程
- 进程间无法直接共享内存,需要使用其他方法,否则内存消耗巨大;
- 创建进程总体资源消耗较高;
- 完全并发执行,效率高;
- 适用于计算密集型,充分利用多核CPU;
常用模块
以下以多进程为例。
multiprocessing
- 手动创建进程Process
def download(url):
res = requests.get(url)
return res
processes = []
for url in urls:
processes.append(Process(target = download,args