Python伪并发、yield、迭代器与for循环

1.并发:指多个动作同时发生
    #author: wylkjj
    #date:2019/1/28
    import time
    def consumer(name):
        print("%s 准备吃包子啦!" %name)
        while True:
            baozi = yield#接收send(i)传的值然后返回
            print("包子[%s]来了,被[%s]吃了!"%(baozi,name))
    def producer(name):
        c=consumer('A')#yield对象,生成器对象
        c2=consumer('B')#yield对象,生成器对象
        c.__next__()#传值
        c2.__next__()#传值
        print("开始准备做包子啦!")
        for i in range(1,10):
            time.sleep(1)
            print("做了2个包子!")
            c.send(i)
            c2.send(i)
    producer("eric")
2.迭代器
(1)迭代器:生成器都是迭代器,迭代器不一定是生成器
          list,tuple,dict,string:Iterable(可迭代对象)
    l=[1,2,3,4,5]
    d=iter(l) #l.__iter__()
    print(d) #<list_iterator object at 0x000002D3D2F286A0>
(2)迭代器协议:
     什么是迭代器?
     满足两个条件:1.有iter方法;2.有next方法
(3)for循环内三件事:(while是没有的)
     1.调用可迭代对象iter方法返回一个迭代器对象
     2.不断调用迭代器对象的next方法
     3.处理StopIteartion
     for i in [1,2,3,4]:
         iter([1,2,3,4])
(4)
    from collections import Iterator
    print(isinstance([1,2,3],list))#判断[1,2,3]是不是list类型
    l=[1,2,3,4,5]
    d=iter(l)
    print(d)
    print(isinstance(l,list))#是列表
    print(isinstance(l,Iterator))#不是迭代器
    print(isinstance(d,Iterator))#是迭代器

  原文链接:https://blog.csdn.net/sinat_41672927/article/details/86681292

容器、可迭代对象、迭代器、生成器之间的关系:

原文地址:https://www.cnblogs.com/sddai/p/14062216.html