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

优质内容筛选与推荐>>
1、使用PowerShell自动化CloudServices发布
2、源氏实验室-JavaScript权威指南-思维导图
3、牛客NOIP提高组R1A中位数(二分)
4、某CMS注入分析及注入点总结
5、快速构建深度学习图像数据集,微软Bing和Google哪个更好用?


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn