概述
多进程:是让操作系统实现多任务,如:同时听歌、肝游戏、聊天
多线程:是让一个程序实现多任务,如:迅雷同时下载多个文件、游戏多个人物
相同点
- 都能实现多任务
不同点
线程共享内存空间;进程的内存是独立的
同一个进程的线程之间可以直接通信;两个进程想通信,通过其他技术实现
一个线程可以控制和操作同一进程里的其他线程;但是进程只能操作子进程
可靠性。进程间不会互相影响。一个线程崩溃会导致整个进程崩溃
python的多线程有gil锁,不是真正的多线程
应用场景
计算密集型
计算密集型的任务主要 消耗CPU,所以计算密集型的任务一般使用 多进程。
如:科学计算、视频解码IO密集型
IO操作 大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度),不占用CPU,一般使用 多线程
如:网络编程(web应用、socket通信软件)、磁盘IO、内存读写数据等