目标:
1:掌握进程与线程之间的区别
2:掌握实际处理问题时进程与线程的优先选择:
一:掌握进程与线程之间的区别
进程:可以完成多任务,一个进程就相当于计算机中一个应用程序,多进程就相当于在计算机中打开多个qq应用程序
线程:可以完成多任务,一个线程就相当于计算机中一个应用中的一个功能窗口,多线程相当于一个qq应用程序打开多个聊天窗口
实例截图
使用区别:
1:进程是系统进行资源分配的进本单元,线程是cpu调度和分派的基本单位,进程包括线程
2:线程占用内存资源比进程少(划分尺度小),这使的多线程程序有高并发行
3:多个进程运行时,每个进程都拥有独立的内存资源(多进程间不能共享全局变量),而多个线程运行时,共享一个内存(因此多线程间可共享全局变量),因此多进程相对于多线程更稳定
图解:
进程与线程对比图示
注意事项:
1:一个程序至少有一个进程(主进程),一个进程至少有一个线程(主线程)
2:线程不能单独运行,必须依赖进程中运行(进程提供线程运行的资源),比如必须开启qq(进程)才能聊天(线程)
二:实际处理问题时进程与线程的优先选择:
1:需要频繁的创建销毁,优先选择线程,因为进程占用资源多,创建销毁慢,例如WEB服务器
2:线程切换速度快,在需要大量计算,频繁切换时,使用线程,例如算法、图像处理
3:多机分布用进程、多核分布用线程
4:需要运行稳定优先用进程,想要运行速度快优先用线程
5:cpu密集型(频繁操作),优先使用进程,因为现在python的解释器cpython存在GIL(全局解释器锁)创建互斥锁,会造成线程处理问题时,多核cpu处理问题变为单核cpu,进程不会出现这种现象
6:i/o密集型可以使用线程
注意事项:
1:在以后实际处理问题时,要用进程+线程+协程的思想,不要选入非此即彼的思想中,灵活运用