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

守护进程:在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. HFSS设计导入AD中

    具体过程有些繁琐,录制了一个视频放在百度网盘了.亲测有效. 网盘地址:http://pan.baidu.com/s/1gfIBhC3 密码:ayoa

  2. css 清除浮动最佳方法!

    .clear:after{content:'\0020';display:block;height:0;clear:both} .clear{*zoom:1}

  3. Window 命令

    tracert XXX.XXX.XXX.XXX 路由追踪命令,可以显示到目的IP所经过的路由    

  4. 关于PHP学习的各种网站

    http://www.shouce.ren/ 各种开发手册 http://yii2.techbrood.com/guide-upgrade-from-v1.html yii2.0和之前版本的区别htt ...

  5. 第二章 Mybatis代码生成工具

    1.mybatis-generator作用 1).生成pojo 与 数据库结构对应 2).如果有主键,能匹配主键 3).如果没有主键,可以用其他字段去匹配 4).动态select,update,del ...

  6. 我利用网上特效开发的Jquery插件

    我利用网上特效开发的Jquery插件 代码如下 (function($){ $.fn.Dialogx = function(options) { var defaults={ Width:" ...

  7. PoEdu - C++阶段班【Po学校】- Lesson03-4_构造函数&赋值函数&拷贝构造函数&学习方式 - 第6天

    PoEdu - C++阶段班[Po学校]- 第6天 课堂选择题目: 1  关于转换构造函数  ClassDemo demo = 1;  调用转换构造函数 2  关于拷贝赋值函数  demo =2; 首 ...

  8. int main(int argc,char* argv[])详解

    argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数, 比如:       int   main(int   argc,   ...

  9. sql server convert 日期

    ),) --2016/11 ),) --2016-11-03 17:46:47

  10. cassandra安装

    从官网下载下来的包解压后有100多M,里面包含了已经编译好的全部程序. 按照方法,进入目录后运行 bin/cassandra -f 运行不成功. 然后根据"https://wiki.apac ...