yield 伪并发

Posted cibud

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yield 伪并发相关的知识,希望对你有一定的参考价值。

import time
def custumer(name):
print(‘%s 准备吃饺子了‘%name)
while True:
curry = yield
print(‘饺子%s来了 ,被%s吃了‘%(curry,name))
def produce(na_me):
c =custumer(‘A‘)
c2 =custumer(‘B‘)
next(c)
next(c2)
print(‘comeintobud要做饺子了‘)
for i in range(7):
time.sleep(1)
print(‘做了两个饺子‘)
c.send(i)
c2.send(i)
produce(‘comeintobud‘)
结果

A 准备吃饺子了
B 准备吃饺子了
comeintobud要做饺子了
做了两个饺子            #这里看似做饺子和吃饺子是同时发生的但实际上相差的0.0000几毫秒看起来没有差距类似并发实际是伪并发
饺子0来了 ,被A吃了
饺子0来了 ,被B吃了
做了两个饺子
饺子1来了 ,被A吃了
饺子1来了 ,被B吃了
做了两个饺子
饺子2来了 ,被A吃了
饺子2来了 ,被B吃了
做了两个饺子
饺子3来了 ,被A吃了
饺子3来了 ,被B吃了
做了两个饺子
饺子4来了 ,被A吃了
饺子4来了 ,被B吃了
做了两个饺子
饺子5来了 ,被A吃了
饺子5来了 ,被B吃了
做了两个饺子
饺子6来了 ,被A吃了
饺子6来了 ,被B吃了



以上是关于yield 伪并发的主要内容,如果未能解决你的问题,请参考以下文章

购物登陆,列表生成式,生成器,斐波那契数列,yield伪并发,迭代器,时间模块,random模块

Java多线程和并发,yield函数和中断线程

greenlet:轻量级的并发编程

Python并发编程理解yield from协程

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

Java并发之wait notify yield sleep join