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比较,好处:没有最大检测数的限制,
    返回链接响应
     
  • 相关阅读:
    Mybatis框架学习_6_mapper.xml 文件中的输入参数详解 (paraterType)
    Mybatis框架学习_5_自定义类型转换器
    Mybatis框架学习_4_属性文件、全局参数、别名
    Mybatis框架学习_3_基于约定或动态代理实现增删改查
    Mybatis框架学习_2_增删改查的简单实现
    Mybatis框架学习_1_简介以及入门示例
    Linux 系统下启动命名的书写过程
    spring-boot-Web学习2-模板引擎 Thymeleaf
    spring-boot-Web学习1-简介
    MacBook无法开机问题
  • 原文地址:https://www.cnblogs.com/huangmx-amin/p/5959732.html
Copyright © 2011-2022 走看看