zoukankan      html  css  js  c++  java
  • 2019年1月2日 生产者消费者模型 元旦快乐

    enumerate 用法:对序列做下标

    l=['q','s','d']
    for i in enumerate(l,start=2):
        print (i)
    for x,y in enumerate(l,start=5):
        print(x,y)

    (2, 'q')
    (3, 's')
    (4, 'd')
    5 q
    6 s
    7 d

    yield 和 send 特性

    def test():
        print("a")
        re=yield 1 # 1 代表的是return 1,可以不填,则返回none;re代表的是函数中的局部变量
        print('b',re)
        yield 2
        print("c")
        yield 3
    
    #yield 相当于return,控制的是函数的返回值
    #yield 另一个特性,接收send传递过来的值,赋值给x
    
    t=test() #拿到了生成器函数,但是并未运行,是否为生成器函数解释器通过yield自动判别
    res=t.__next__()
    print('_next_方法:',res)
    res2=t.send('I am value')#send和next的执行很像,只是send可以和生成器互动,传入一个值,将需要传递对值,传递上一个yield
    print('send方法:',res2)
    res3=next(t)
    print('next函数方法:',res3)

    第1个人,吃了包子1
    第2个人,吃了包子2
    第3个人,吃了包子3
    第4个人,吃了包子4
    第5个人,吃了包子5
    a
    _next_方法: 1
    b I am value
    send方法: 2
    c
    next函数方法: 3

    import time
    
    baozi=['包子%s'%(i+1) for i in range(5)] #生产包子
    def customer (res):
        #吃包子顾客
        for index,bz in enumerate(res,start=1):
            time.sleep(0.1)
            print('第%s个人,吃了%s'%(index,bz))#吃包子
    customer(baozi)
    
    
    #并行方法吃包子,单线程内并发
    
    def ch(name):
        print('我是%s,我要吃包子'%name)
        while True:
            bz=yield
            time.sleep(0.2)
            print("%s吃的是%s"%(name,bz))
    
    def chibaozi(name,xian):
        c1 = ch(name)
        c1.__next__()
        for i in range(10):
            time.sleep(0.2)
            c1.send(xian+"%s"%i) #send 传递给上面的yield
    
    chibaozi("sxj",'肉包')

    第1个人,吃了包子1
    第2个人,吃了包子2
    第3个人,吃了包子3
    第4个人,吃了包子4
    第5个人,吃了包子5
    我是sxj,我要吃包子
    sxj吃的是肉包0
    sxj吃的是肉包1
    sxj吃的是肉包2
    sxj吃的是肉包3
    sxj吃的是肉包4
    sxj吃的是肉包5
    sxj吃的是肉包6
    sxj吃的是肉包7
    sxj吃的是肉包8
    sxj吃的是肉包9

  • 相关阅读:
    在日本被禁止的コンプガチャ設計
    Starling常见问题解决办法
    Flixel引擎学习笔记
    SQLSERVER中修复状态为Suspect的数据库
    T4 (Text Template Transformation Toolkit)实现简单实体代码生成
    创建Linking Server in SQL SERVER 2008
    Linq to Sql 与Linq to Entities 生成的SQL Script与分页实现
    Linq to Entity 的T4 模板生成代码
    在VisualStudio2008 SP1中调试.net framework 源代码
    使用HttpModules实现Asp.net离线应用程序
  • 原文地址:https://www.cnblogs.com/python1988/p/10205909.html
Copyright © 2011-2022 走看看