#1、生产者和消费者模型producer and consumer model
import time
def producer():
ret = []
for i in range(2):
time.sleep(0.2)
ret.append("包子%s" %i)
return ret
def consumer(res):
for index,baozi in enumerate(res):
time.sleep(0.2)
print("第%s个人,吃了%s" %(index,baozi))
res = producer()
consumer(res)
print("上面的结束了-------------------------------------------------------------")
#2、单线程下实现高并发
def test():
print("开始啦")
firt = yield #这个1相当于return的1,相当于函数的返回值,而yield会接收一个值传送给firt,这个firt是函数内部的局部变量
print("第一次",firt)
yield 2
print("第二次")
t = test()
res = t.__next__() #等同于next(t) 定义res的意思是定义返回值也就是上面的yield的返回值1
print(res)
# t.__next__()
#生成器下面的send方法
# res = t.send(None) #t.send(None)就send给yield1了 yield1可以赋值firt send(None)可以保证函数接着运行 send(None)里面的参数会传给赋值
res = t.send("函数停留在first那个位置,我就是给first赋值的") #send可以触发
print(res)
#t.__next__方法就等同于t.send(None)方法
print("上面的结束了了了--------------------------------------------------------------------------------------------------------ll")
#并发:两个程序同时在等待,A程序生产完成调到B程序,B程序生产完成以后再跳到A程序,来回切换的过程,两个程序没有先后的顺序
import time
def consumer(name):
print("我是[%s,我准备开始吃包子了]" %name)
while True:
baozi = yield #yield代表等待包子的过程
time.sleep(1)
print("%s 很开心的把【%s】吃掉了" %(name,baozi))
def producer():
c1 = consumer("wupeiqi")
c2 = consumer("yuanhao_SB")
c1.__next__()
c2.__next__()
for i in range(10):
time.sleep(1)
c1.send("包子 %s" %i)
c2.send("包子 %s" %i)
producer() #调用producer函数由send触发了另外一个函数,由另外一个函数结束了以后又跳到了原先的函数,然后接着send

生产者和消费者模型producer and consumer(单线程下实现高并发)的更多相关文章

  1. Java里的生产者-消费者模型(Producer and Consumer Pattern in Java)

    生产者-消费者模型是多线程问题里面的经典问题,也是面试的常见问题.有如下几个常见的实现方法: 1. wait()/notify() 2. lock & condition 3. Blockin ...

  2. Python之生产者&、消费者模型

    多线程中的生产者和消费者模型: 生产者和消费者可以用多线程实现,它们通过Queue队列进行通信. import time,random import Queue,threading q = Queue ...

  3. 【java线程系列】java线程系列之线程间的交互wait()/notify()/notifyAll()及生产者与消费者模型

    关于线程,博主写过java线程详解基本上把java线程的基础知识都讲解到位了,但是那还远远不够,多线程的存在就是为了让多个线程去协作来完成某一具体任务,比如生产者与消费者模型,因此了解线程间的协作是非 ...

  4. python queue和生产者和消费者模型

    queue队列 当必须安全地在多个线程之间交换信息时,队列在线程编程中特别有用. class queue.Queue(maxsize=0) #先入先出 class queue.LifoQueue(ma ...

  5. python并发编程之守护进程、互斥锁以及生产者和消费者模型

    一.守护进程 主进程创建守护进程 守护进程其实就是'子进程' 一.守护进程内无法在开启子进程,否则会报错二.进程之间代码是相互独立的,主进程代码运行完毕,守护进程也会随机结束 守护进程简单实例: fr ...

  6. 人生苦短之我用Python篇(队列、生产者和消费者模型)

    队列: queue.Queue(maxsize=0) #先入先出 queue.LifoQueue(maxsize=0) #last in fisrt out  queue.PriorityQueue( ...

  7. python:生产者与消费者模型

    1,生产者与消费者模型的矛盾在于数据供需的不平衡 import time import random from multiprocessing import Queue from multiproce ...

  8. Python 之并发编程之进程下(事件(Event())、队列(Queue)、生产者与消费者模型、JoinableQueue)

    八:事件(Event()) # 阻塞事件:    e = Event() 生成事件对象e    e.wait() 动态给程序加阻塞,程序当中是否加阻塞完全取决于该对象中的is_set() [默认返回值 ...

  9. python多线程+生产者和消费者模型+queue使用

    多线程简介 多线程:在一个进程内部,要同时干很多事情,就需要同时执行多个子任务,我们把进程内的这些子任务叫线程. 线程的内存空间是共享的,每个线程都共享同一个进程的资源 模块: 1._thread模块 ...

随机推荐

  1. Docker 简单发布dotnet core项目 文本版

    原文:https://www.cnblogs.com/chuankang/p/9474591.html docker发布dotnet core简单流程 照着步骤来基本没错 但是有几个要注意的地方: v ...

  2. 阿里Sentinel整合Zuul网关详解

    前面我们讲解了Sentinel整合Spring Cloud Gateway,详细请查看文章:阿里Sentinel支持Spring Cloud Gateway啦 目前来说,大部分公司线上的网关应该是Zu ...

  3. nmap中文手册

    译注该Nmap参考指南中文版由Fei Yang <fyang1024@gmail.com>和Lei Li<lilei_721@6611.org> 从英文版本翻译而来. 我们希望 ...

  4. 物联网架构成长之路(45)-容器管理平台Rancher

    0.前言 按照上一篇博客,我已经把需要下载的rancher docker 依赖镜像下载上传到Harbor了. 1. 安装 执行如下,实现一键安装 docker run -d --restart=unl ...

  5. tensorflow之tf.stop_gradient

    停止梯度计算. 当在一个图中执行时, 这个op按原样输出它的输入张量. 当构建ops来计算梯度时,该op会阻止将其输入贡献考虑在内. 参数: Input: 一个张量. name: 操作的名称(可选) ...

  6. python asyncio 协程调用task步骤

    import asyncio async def compute(x, y): print("Compute %s + %s ..." % (x, y)) await asynci ...

  7. 【Python】itertools之product函数

    [转载]源博客 product 用于求多个可迭代对象的笛卡尔积(Cartesian Product),它跟嵌套的 for 循环等价.即: product(A, B) 和 ((x,y) for x in ...

  8. 2019-3-20-UWP-How-to-custom-RichTextBlock-right-click-menu

    原文:2019-3-20-UWP-How-to-custom-RichTextBlock-right-click-menu title author date CreateTime categorie ...

  9. U9创建BE组件

    打开UBF,新建项目->实体项目 输入名称后,点击确定,第二步:修改名称以在后期作为文件夹区分 第三步:创建实体 第四步:添加U9基础对象引用 拖动到解决方案的Reference 第五步:右键构 ...

  10. Activex在没有电子秤api的情况下获取串口数据

    大二做B/S架构的项目使用了安衡电子秤CHS-D+R和一款扫码枪,两个设备的串口使用一样,这款电子秤是相当的坑,没有开发的api,无奈只能自己开发Activex了,在B/S架构中进行引用Activex ...