通过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函数了

正文到此结束

本文标题:Python函数和常用模块-生成器并行运算及迭代器

本文链接:https://www.hantaosec.com/319.html

除非另有说明,本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源及链接,不带链接禁止任何转载!访问任何网络安全相关文章,则视为默认接受网络安全文章免责声明 ,请认真阅读。

喜欢我的文章吗?
别忘了点赞或赞赏,让我知道创作的路上有你陪伴。