多进程 socket server
只要来了一个client请求 开一个进程
进程开多了就会卡
进程的调度
进程的开启的开销
给操作系统的负担
数据文件 代码
记录当前的执行位置
线程:
轻量级
在进程中数据共享
是进程的一部分,不能独立存在
是计算机中被CPU调度的最小单位
进程:
对操作系统的压力大
数据隔离
可以在操作系统中独立存在'
计算机中资源分配的最小单位'
假设有一个机制
开启进程的开销变短
调度的时间也变短
操作系统减负
计算机 中被cpu调度的最小单位
线程是计算机中被CPU调度的最小单位
轻量级的进程或者轻型进程
线程本身创建出来就是为了解决并发问题的
并且它的整体效率比进程要高
但是线程实际上也有一些性能上的限制管理调度
在整个程序界:
如果你的程序需要数据隔离: 多进程
如果你的程序对并发的要求非常高:多线程
内存中的线程
用户级线程
内核级线程
混合实现
python
单核的一个cpu
多核的 作为一门脚本语言
线程锁这件事是由cpython解释器完成
对于python来说,同一时刻只能有一个线程被cup访问
彻底的解决了多核环境下的安全问题
线程锁:全局解释器锁GIL
1.这个锁是锁线程的
2.这个锁是解释器提供的
多线程仍然有他的优势
你的程序中用到CPU真的多么
如果100% 90%的时间都消耗在计算上,那么cpython解释器下的多线程对你来说确实
但是你写的大部分程序的时间实际上都消耗在了IO操作上
遇到高计算型
开进程 4个进程 每个进程里开n个线程
换个解释器
from threading import Thread import time #Process #Thread def func(): print("start") time.sleep(1) print("end") if __name__ =="__main__": t =Thread(target=func) t.start() for i in range(5): print("主线程") time.sleep(0.3)