网络线程

多进程 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)
原文地址:https://www.cnblogs.com/liurenli/p/10102071.html