zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    杂谈
    P1441 砝码称重
    P3159 [CQOI2012]交换棋子
    P5200 [USACO19JAN]Sleepy Cow Sorting
    P5201 [USACO19JAN]Shortcut
    P5196 [USACO19JAN]Cow Poetry
    20190922UVA测试
    P4014 分配问题
    P4012 深海机器人问题
    P2050 [NOI2012]美食节
  • 原文地址:https://www.cnblogs.com/sddai/p/14062216.html
Copyright © 2011-2022 走看看