自定义IO异步基础知识: --所有的请求都基于socket实现,一个请求就是一个socket socket.setblocking(False) 不需要阻塞,一个请求完了发送另外一个,会报错,需解决 --IO多路复用[是同步的请求] IO多路复用有epoll, poll, select,知道epoll性能比其他几者要好[epoll先找到门牌号然后找人]. IO多路复用本质上是在同一个线程或进程中,通过拨动开关的方式来执行多个IO操作.注意实际上每个IO操作都是独立进行的.只是由原来的一对一变成了…
阻塞IO和非阻塞IO.同步IO和异步IO的区别 讨论背景:Linux环境下的network IO. 1.先决条件(几个重要概念) 1.1.用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限.为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空…
这个章节的内容是关于IO的概念,谈一谈什么是 阻塞IO 非阻塞IO 同步IO 异步IO.以下摘要是我对这四种IO的一个形象理解. 场景是去去银行办理业务.节点有三个,1)到银行提交申请:2)取号:3)办理业务:4)结束拿回资料 阻塞IO:个人到银行,拿号排队,一直等到叫号,提交材料,然后等待柜员办理,办理结束拿回材料,事件结束. 非阻塞IO:个人到银行,拿号以后,不在银行一直等待,而是出去遛弯或者做别的事,定时回银行查看叫号情况,直到号码轮到自己,然后后续过程同阻塞IO一样. IO多路复用:请了…
文件IO.储存器模块 文件IO 代码示例: # -*- coding:utf-8 -*- #! /usr/bin/python # filename:using_file.py poem = '''\ 这是一个测试文本 用于测试文件写入的功能 如果结果正确, 这里会显示正常的内容. ''' f = file('poem.txt','w') # 创建一个文件,模式为write,有三种,r:read,w:write,a:append # 默认是read f.write(poem) # 写入操作 f.…
asyncio 这是python3.4引入的标准库,直接内置对异步IO的支持.asyncio的编程模型就是一个消息循环.从asyncio模块中直接获取一个EventLoop的引用,然后把需要执行的协程扔到EventLoop中执行,就实现了异步IO. 协程 子程序,或者称为函数.在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕.子程序调用是通过栈实现的,一个线程就是执行一个子程序.子程序调用总是一个入口,一次返回,调用顺序是明确的.…
queue (队列) 队列是为线程安全使用的. 1.先入先出 import queue #测试定义类传入队列 class Foo(object): def __init__(self,n): self.n = n ) ) ),timeout=) # 超时时间后,抛出队列full异常 , , ],timeout=) print(new.full()) #判断队列是否满 True #) #队列已满,再放报错 print(new.qsize()) # 查看当前队列长度 print(new.get())…
ProcessPoolExecutor对multiprocessing进行了高级抽象,暴露出简单的统一接口. 异步非阻塞 爬虫 对于异步IO请求的本质则是[非阻塞Socket]+[IO多路复用]: """ 史上最牛逼的异步IO模块 """ import select import socket import time     class AsyncTimeoutException(TimeoutError):     ""&q…
算法.自定义模块.系统标准模块(time .datetime .random .OS .sys .hashlib .json和pickle) 一:算法回顾: 冒泡算法,也叫冒泡排序,其特点如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.针对所有的元素重复以上的步骤,除了最后一个. 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 使用pytho…
一.定义 模块就是用一堆的代码实现了一些功能的代码的集合,通常一个或者多个函数写在一个.py文件里,而如果有些功能实现起来很复杂,那么就需要创建n个.py文件,这n个.py文件的集合就是模块.如果不懂可以先看下面这篇博文:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318447437605e90206e261744c08630a836851f5183000 二.类型…
案例一: # version: python3.2.5 # author: 'FTL1012' # time: 2018/2/6 16:25 from django.db import models class Book(models.Model): name = models.CharField(max_length=33) class Author(models.Model): name = models.CharField(max_length=33) # 自己创建第三张关联表,查询操作数…