2017/9/5的学习内容___通过yield实现在单线程的情况下实现并发运算的效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017/9/5的学习内容___通过yield实现在单线程的情况下实现并发运算的效果相关的知识,希望对你有一定的参考价值。

  之前的学习内容,由于没有申请开通博客,就没有分享,今天想分享一下学习内容:通过yield实现在单线程的情况下实现并发运算的效果

  

  采用的是经典的生产消费者模型 

  定义了两个函数 Consumer与Producer 

  关于生成器标志yield : 如果用__next__访问,只是单纯调用yield ;如果是send访问,不仅可以访问yield,也可以给yield赋值!  

  需求:一个人造包子;两个人吃包子;

  代码如下:

  

技术分享
 1 # -*- coding:utf-8 -*-
 2 # Author : 何子辰
 3 
 4 # 单线程也可以实现并行运算
 5 # 生产者消费者模型
 6 
 7 import time
 8 
 9 def Consumer(name):
10     print(%s has started to eat the steamed stuffed bun!%name)
11     while True:
12         SS_bun = yield
13         print(The %s is coming,but eaten by %s!%(SS_bun,name))
14 
15 def Producer(name):
16     C1 = Consumer(Luna)
17     C2 = Consumer(Iriving)
18     C1.__next__()
19     C2.__next__()
20     print(Hzc is starting to make the steamed stuff bun!!)
21     for i in range(10):
22         time.sleep(1)
23         Buns = [韭菜馅,鲅鱼馅]
24         print(Hzc has made two buns, the first one is %s,the second one is %s%(韭菜馅,鲅鱼陷))
25         C1.send(Buns[0])
26         C2.send(Buns[1])
27 
28 
29 Producer(HZC)
View Code

 

  

 


以上是关于2017/9/5的学习内容___通过yield实现在单线程的情况下实现并发运算的效果的主要内容,如果未能解决你的问题,请参考以下文章

python学习之生成器yield

day 18 lambda表达式

实时监控文件内容行数据变化,基于Python yield句法

实时监控文件内容行数据变化,基于Python yield句法

学习使用生成函数实现可迭代对象

learn_Day13 生成器