Python函数和常用模块-生成器并行运算及迭代器 | 【韩涛博客】

Python函数和常用模块-生成器并行运算及迭代器

Python函数和常用模块-生成器并行运算及迭代器

通过yield实现在单线程的情况并行运算,其实还是单线程的工作,有并行工作的效果,吃包子:

import time
def consumer(name):
print("%s 准备吃包子啦!" %name)
while True:
baozi = yield
print("包子[%s]来了,被[%s]吃了!" %(baozi,name))
def producer(name):
c = consumer('Hunter')
c2 = consumer('XiaoQuan')
c.__next__()
c2.__next__()
print("开始准备做包子啦!")
for i in range(10):
time.sleep(1)
print("做了2个包子!")
c.send(i)
c2.send(i)
producer("Hunter")

迭代器:

1、集合数据类型,如list、tuple、dict、set、str等;

2、generator,包括生成器和带yield的generator function。

定义:可以直接用于for循环的对象,都叫可迭代对象(可循环对象):Iterable

定义:可以使用Next()函数调用并不断返回下一个值的对象叫迭代器:Iterator

注:生成器都是迭代器(Iterator)对象,但是列表(list)、字典(dict)、字符串(str)虽然是可迭代对象,但并不是迭代器

Python的for循环本质上就是通过不断调用next()函数实现的

eg:

for x in [1, 2, 3, 4, 5]:
pass
isinstance()函数:判断一个对象是否是Iterable对象

eg:

isinstance([], Iterable)  #返回True
isinstance({}, Iterable)  #返回True
isinstance('abc', Iterable)  #返回True
isinstance()函数:还可以判断一个对象是否是Iterator对象

eg:

from collections import Iterator #导入模块
isinstance((x for x in range(10)), Iterator)  #返回True
isinstance([], Iterator)  #返回False
dir(变量)函数:列出可以使用的函数方法
iter(变量)函数:把可迭代对象变为迭代器

eg:

a=[1,2,3]
iter(a)
b=iter(a)
b.__next__()  #返回1
b.__next__()  #返回2
b.__next__()  #返回3

ps:已经可以使用Next函数了

广告

发表评论 取消回复
表情 图片 链接 代码

分享
×
订阅图标按钮