#需求:生成器的应用 #然后每次g.send(url),打印页面内容,利用g可以无限send 1 from urllib.request import urlopen #导入爬虫模块 2 def get(): 3 while True: 4 url = yield #将函数改成协程函数 5 prin... ...
分类:
Web程序 时间:
2017-04-12 20:37:07
阅读次数:
175
其实这个面向过程编写程序,是编写程序的基础,所以一定要好好掌握 此程序涉及知识点:装饰器,生成器,协程器应用 ...
分类:
编程语言 时间:
2017-04-12 19:33:15
阅读次数:
162
一.协程函数的应用 写一个装饰器用于让协程函数不需要输入再执行一次next()函数 分析: 在装饰器中生成该协程函数的生成器, 并且执行一次next()函数 def firstNext(func): def wrapper(*args, **kwargs): g = func(*args, **kw ...
分类:
编程语言 时间:
2017-04-12 18:00:30
阅读次数:
171
一、什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法) 3.协议是一种约 ...
分类:
编程语言 时间:
2017-04-12 16:53:14
阅读次数:
302
1,迭代器协议: 1.1 迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 1.2. 可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法) 1.3. ...
分类:
编程语言 时间:
2017-04-12 04:06:38
阅读次数:
267
1、协程函数吃包子简洁案例 下面代码中需要注意的是,yield的位置和作用,仔细看运行原理 既然yield以表达式的形式出现了,我们就不得不想到赋值,那要赋值就得先传值,这里就会用到g.send(value),g指生成器,g.send(value)作用就和next(g)差不多一样,都是会触发函数进行 ...
分类:
其他好文 时间:
2017-04-12 02:08:04
阅读次数:
184
一、coroutine.create创建协程 參数是协程的主函数,返回一个thread对象 co = coroutine.create(function() print("coroutine execute!") end) 二、协程状态 协程有三种状态:挂起(suspended)、执行(runnin ...
分类:
其他好文 时间:
2017-04-11 09:39:25
阅读次数:
122
tornado使用了单进程(当然也可以多进程) + 协程 + I/O多路复用的机制,解决了C10K中因为过多的线程(进程)的上下文切换 而导致的cpu资源的浪费。 tornado中的I/O多路复用前面已经讲过了。本文不做详细解释。 来看一下tornado中的协程模块:tornado.gen: tor ...
分类:
其他好文 时间:
2017-04-10 19:17:08
阅读次数:
273
本章内容 一、操作系统发展史介绍 手工操作(无操作系统) 1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式。 手工操作 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对 ...
分类:
编程语言 时间:
2017-04-09 23:08:56
阅读次数:
240
1. IO多路复用 2. paramiko 3. MySQL - SQL语句 - Python操作MySQL - pymysql模块 上节回顾: - 线程 - 锁 - 池 - 进程 - 锁 - 池 - 数据共享 - 协程 - 对线程的分片(微线程) - IO多路复用 r,w,e = select.s ...
分类:
数据库 时间:
2017-04-06 14:47:52
阅读次数:
284