码迷,mamicode.com
首页 > 编程语言 > 详细

网络线程

时间:2018-12-11 15:49:57      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:优势   server   star   安全   并且   单位   targe   环境   存在   

多进程 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)

 

网络线程

标签:优势   server   star   安全   并且   单位   targe   环境   存在   

原文地址:https://www.cnblogs.com/liurenli/p/10102071.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!