回顾:
线程:资源的集合;内存共享,两个或多个线程同时修改一份数据时,造成结果可能不正确,必须加锁
进程:运行的最小单元

守护进程:在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比较,好处:没有最大检测数的限制,
返回链接响应
 

Python成长笔记 - 基础篇 (十一)的更多相关文章

  1. Python成长笔记 - 基础篇 (十一)----RabbitMQ、Redis 、线程queue

    本节内容: 1.RabbitMQ 消息队列 2.Redis 3.Mysql   PY 中的线程queue(threading Queue):用于多个线程之间进行数据交换,不能在进程间进行通信 进程qu ...

  2. Python成长笔记 - 基础篇 (十二)

    本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 主题:学员管理系统 需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的 ...

  3. Python成长笔记 - 基础篇 (十)

    本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queu ...

  4. Python成长笔记 - 基础篇 (七)python面向对象

      三大特性: 1.封装:在类中对数据赋值.内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法 2.继承:一个类可以派生出子类,在父类中定义的属性.方法会自动被子类继承 ...

  5. Python成长笔记 - 基础篇 (六)python模块

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  6. Python成长笔记 - 基础篇 (四)函数

    1.面向对象:类(class) 2.面向过程:过程(def) 3.函数式编程:函数(def)----python   1.函数:http://egon09.blog.51cto.com/9161406 ...

  7. Python成长笔记 - 基础篇 (三)python列表元组、字典、集合

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码   一.列表和元组的操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义 ...

  8. Python成长笔记 - 基础篇 (二)python基本语法

    Python的设计目标之一是让代码具备高度的可阅读性.它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观.它不像其他的静态语言如C.Pascal那样需要重复书写声明语句,也不像 ...

  9. Python成长笔记 - 基础篇 (一)python简介

    一.Python介绍 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),由吉多·范罗苏姆(Guido van Rossum)于1989年发明,第一个公开发行版发行于1991 ...

随机推荐

  1. 向 Git 服务器添加 SSH 公钥

    . . . . . 在网上很少找到文章有提到如何将自己的 Git 远程仓库配置成可以通过 SSH 公钥方式认证的,而几乎清一色都是告诉你怎么通过 web 界面向 GitHub 添加 SSH 公钥.LZ ...

  2. Eclipse里面的一些常规设置

    一.Eclipse里面的默认编码是GBK,但是Android开发的编码都是UTF-8,所以一定要修改自己的工程的编码,不要坑队友哦~ (1)选中当前的工程,点击右键,如图选择(这只是改变当前工程的编码 ...

  3. transition与visibility之间的小tips

    之前经常遇到这个问题,就是在用transition样式的时候经常不起作用,一个元素处于隐藏状态(display:none)时,通过添加一个class将元素显示出来,这样其实过度效果是不起作用的,懒做的 ...

  4. ubuntu 下安装32位库 ia32-libs方法

    这两天在整Linux系统,要配置JDK,SDK环境,但是SDK配置使用的时候,提示没有权限. 需要安装32位库来解决,还有就是在修改文件的时候提示不能修改.唉...反正就是没有办法正常操作啦 后来根据 ...

  5. 脚本录制(JMeter)

    使用JMeter录制脚本: 1.打开JMeter工具,创建一个线程组,接着创建一个http代理服务器,代理服务器设置如下:

  6. ng-init,ng-controller,ng-model

    1.ng-init 用于初始化数据,跟在$scope插入数据一样,但是在配合repeat指令时候比较有用: <div ng-repeat="arrOuter in arr" ...

  7. Zabbix(一)--zabbix 2.4.8 安装

    zabbix依赖于LAMP,所以部署前要先保证这个平台. 安装服务端(Server) zabbix官网的rpm包都是按照功能分开一个个,比如: zabbix-server-2.4.7-1.el7.x8 ...

  8. 关于python的requests库抓取源文件中文乱码的情况

    import requests html=requests.get('http://www.12306.cn/mormhweb/') print html.text 刚开始是这么写的,运行时一直弹出错 ...

  9. 理解soft-clipped reads

    什么是soft-clipped reads 当基因组发生某一段的缺失,或转录组的剪接,在测序过程中,横跨缺失位点及剪接位点的reads回帖到基因组时,一条reads被切成两段,匹配到不同的区域,这样的 ...

  10. 《笨办法学C》笔记之基础语法

    这篇笔记不怎么系统,只记录自己比较生疏的知识 变量定义 类型 定义 格式化符号 备注 整数 int %d 长整型 long %ld 单精度浮点 float %f 双精度浮点 double %f 字符 ...