zoukankan      html  css  js  c++  java
  • Python成长笔记

    回顾:
    线程:资源的集合;内存共享,两个或多个线程同时修改一份数据时,造成结果可能不正确,必须加锁
    进程:运行的最小单元
    守护进程:在start之前设置setDemo()
    队列queue:作用解耦,使程序之间是实现松耦合,提高处理效率
    FIFO:先进先出
    LIFO:后进先出
    队列中的数据使用完就没了(消费者生产者模型)
    事件event:(红绿灯模型)
     
     
    python中的多线程是一个假象,我们是利用它上下文切换
    io操作不占用CPU,计算操作占用CPU,
    python中大量的计算反而会使程序变得更慢
    python的多线程不适合CPU密集操作型的任务,适合io密集型的任务
     
    进程之间不能互相访问,不需要锁的概念
    多进程可以解决多核的问题
    每一个子进程都是由它的父进程启动的,主进程本身的父进程是python本身
     
     
     
     
     
    if __name__ =="__main__" 手动执行时会执行下面的代码,若是当成一个模块让其他调用则不执行
     
    :微线程,一种用户态的轻量级线程,在单线程下实现并发的效果,cpu根本不知道,单线程,不需要锁。协程跑在线程上,线程跑在进程中。
    单线程是串行的
    在单线程下实现并发的效果:各协程遇到IO操作就切换,只剩下CPU运算;什么时候再切回去???IO操作完了就切回去,程序自动检测IO操作完了
     
     
     
    异步IO
    论事件驱动和异步IO
     
     
    IO 多路复用
     
    用户空间和内存空间:
    进程切换:保存上下文
    进程的阻塞:
    文件描述符:用于表述指向文件的引用的抽象化的概念,一个非负整数,一个索引值
    文件句柄:实际存在的
    缓存I/O:数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。
     
    内核态到用户态的数据切换:用户态没有权限直接对内核进行操作,只能调用内核的接口,由操作系统的内核进行操作
     
    二 IO模式
    阻塞I/O:
    非阻塞I/O:
     
    I/O多路复用
     
    select 把收到的多个socket发送给内核,有一个链接活跃,内核就将检测到的内容返回给用户(但是不告诉用户是哪个链接活跃),让用户确认再调用
     
    异步I/O
    内核处理完,直接将数据拷贝到用户态,不会产生block
     
     
     
    I/O多路复用三种模式:
    select 
    poll 
    epoll 
    和select比较,好处:没有最大检测数的限制,
    返回链接响应
     
  • 相关阅读:
    angular 中同级元素交替样式
    Type反射遍历类的属性
    对路径“xxxxx”的访问被拒绝。
    判断文件路径和文件是否存在
    List集合删除方法
    .NET 树型递归
    AngularJS使用ngMessages进行表单验证
    Windows 端口占用查询
    小程序页面高度控制
    如何理解多个域名解析到同一个服务器空间上?
  • 原文地址:https://www.cnblogs.com/huangmx-amin/p/5959732.html
Copyright © 2011-2022 走看看