Python连载38-协程、可迭代、迭代器、生产者消费者模型
一、生产者消费者模型
import multiprocessing
from time import ctime
def consumer(input_q):
print("Into consumer:",ctime())
while True:
#处理项
item = input_q.get()
print("pull",item,"out of q")#此处替换为有用的工作
input_q.task_done()#发出信号通知任务完成
print("Out of consumer:",ctime()) #此句未执行,因为q.join()收集到四个task_done()信号后,主进程启动
def producer(sequence,output_q):
print("Into producer:",ctime())
for item in sequence:
output_q.put(item)
print("put",item,"into_q")
print("Out of producer:",ctime())
#建立进程
if __name__ == "__main__":
q=multiprocessing.JoinableQueue()
#运行消费者进程
cons_p = multiprocessing.Process(target=consumer,args=(q,))
cons_p.daemon = True
cons_p.start()
#生产多个项,sequence代表要发送给消费者的项序列
#在实践中,这可能是生成器的输出或通过一些其他方式生产出来的
sequence = [1,2,3,4]
producer(sequence,q)
#等待所有项被处理
q.join()

二、协程
1.协程参考资料:
http://python.jobble.com/86481/
http://python.jobble.com/87310/
https://segmentfault.com/a/1190000009781688
2.迭代器参考资料
可迭代(iterable):直接作用于for循环变量
迭代器(Iterator):不但可以作用于for循环,还可以被next调用
3.关系:list是一个典型的可迭代对象,但是不是一个迭代器,因为list不可以被next调用
4.判断标准:通过isinstance来判断某个变量是否是一个实例,判断是否可以迭代
from collections import Iterable,Iterator l = [i for i in range(5)] #可迭代 print(isinstance(l,Iterable))#判断是否可迭代 print(isinstance(l,Iterator))#判断是否是一个迭代器 s_iter = iter(l)#将其转换为可以迭代的和迭代器 print(isinstance(s_iter,Iterable))#判断是否可迭代 print(isinstance(s_iter,Iterator))#判断是否是一个迭代器

三、源码
d26_2_consumer_and_producer_model.py
d27_1_iterable_and_iterator_and_their_transform.py
https://github.com/ruigege66/Python_learning/blob/master/d26_2_consumer_and_producer_model.py
https://github.com/ruigege66/Python_learning/blob/master/d27_1_iterable_and_iterator_and_their_transform.py
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Python连载38-协程、可迭代、迭代器、生产者消费者模型的更多相关文章
- 4月25日 python学习总结 互斥锁 IPC通信 和 生产者消费者模型
一.守护进程 import random import time from multiprocessing import Process def task(): print('name: egon') ...
- python中和生成器协程相关yield from之最详最强解释,一看就懂(二)
一. 从列表中yield 语法形式:yield from <可迭代的对象实例> python中的列表是可迭代的, 如果想构造一个生成器逐一产生list中元素,按之前的yield语法,是在 ...
- python中和生成器协程相关的yield之最详最强解释,一看就懂(一)
yield是python中一个非常重要的关键词,所有迭代器都是yield实现的,学习python,如果不把这个yield的意思和用法彻底搞清楚,学习python的生成器,协程和异步io的时候,就会彻底 ...
- 第十一章:Python高级编程-协程和异步IO
第十一章:Python高级编程-协程和异步IO Python3高级核心技术97讲 笔记 目录 第十一章:Python高级编程-协程和异步IO 11.1 并发.并行.同步.异步.阻塞.非阻塞 11.2 ...
- [转载]Python 3.5 协程究竟是个啥
http://blog.rainy.im/2016/03/10/how-the-heck-does-async-await-work-in-python-3-5/ [译] Python 3.5 协程究 ...
- [译] Python 3.5 协程究竟是个啥
转自:http://blog.rainy.im/2016/03/10/how-the-heck-does-async-await-work-in-python-3-5/ [译] Python 3.5 ...
- python学习笔记 协程
在学习异步IO模型前,先来了解协程 协程又叫做微线程,Coroutine 子程序或者成为函数,在所有语言中都是层级调用,比如a调用b,b调用c.c执行完毕返回,b执行完毕返回,最后a执行完毕返回 所以 ...
- Python 进阶 之 协程
协程的概念级描述(与线程对比):转自知乎 链接 线程有两个必须要处理的问题:一是碰着阻塞式I\O会导致整个进程被挂起: 二是由于缺乏时钟阻塞,进程需要自己拥有调度线程的能力. 如果一种实现使得每个线程 ...
- Python中异步协程的使用方法介绍
1. 前言 在执行一些 IO 密集型任务的时候,程序常常会因为等待 IO 而阻塞.比如在网络爬虫中,如果我们使用 requests 库来进行请求的话,如果网站响应速度过慢,程序一直在等待网站响应,最后 ...
随机推荐
- 约会安排 HDU - 4553(线段树区间查询,区间修改,区间合并)
题目: 寒假来了,又到了小明和女神们约会的季节. 小明虽为屌丝级码农,但非常活跃,女神们常常在小明网上的大段发言后热情回复“呵呵”,所以,小明的最爱就是和女神们约会.与此同时,也有很多基友找他开黑, ...
- MonkeyRunner 第一天
1.安装集成Android SDK的环境(如Eclipse),主要是为了android的模拟器,安装python编译环境,MonkeyRunner是基于Jython 2.使用Eclipse打开Andr ...
- ip地址、域名、DNS、URL的区别与联系
IP:每个连接到Internet上的主机都会分配一个IP地址,此ip是该计算机在互联网上的逻辑地址的唯一标识,计算机之间的访问就是通过IP地址来进行的.写法:十进制的形式,用“.”分开,叫做“点分十进 ...
- MySQL多表关联数据同时删除
MySQL多表关联时的多表删除: DELETE t1, t2FROM t1LEFT JOIN t2 ON t1.id = t2.idWHERE t1.id = 25
- 天眼查sign 算法破解
天眼查sign 算法破解 最近真的在sign算法破解上一去不复返 前几天看过了企查查的sign破解 今天再看看天眼查的sign算法破解,说的好(zhuang)点(bi)就是破解,不好的就是这是很简单的 ...
- centos7yum安装mysql5.7
https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-centos-7 https://typecodes. ...
- 用jquery uploadify上传插件上传文件
public void ProcessRequest(HttpContext context) { string esOIDs = System.Web.HttpContext.Current.Req ...
- [python]专用下划线标识符
1. python用下划线作为变量前缀和后缀,来指定特殊变量. _xxx: 不用'from module import *'导入,一般被看作是私有的,在模块或类外不可用使用. __xxx__: 系统定 ...
- CF 538 D. Flood Fill 递归 区间DP
link:https://codeforces.com/contest/1114/problem/D 题意: 给定一个数组,有不同的颜色,你可以从任意一个位置开始,改变颜色,相邻的是同一种颜色的位子的 ...
- CodeForces 982 D Shark
Shark 题意:一个研究员观察了一条鲨鱼n天的运动,然后这条鲨鱼他只会往前走,不会回到去过的地方,现在有一个k,,如果鲨鱼当天游过的距离 >= k, 代表的鲨鱼在这天会前往下一个地点,现在求鲨 ...