cpu的频率很快, 虽然一个时间节点单核不能完成两个事情, 但快速切换的cpu核心可以在一段时间执行多个事情, 这就是伪并发.
Python中, 一些代码也可以实现伪并发的状态, 下面是一个例子:
import time
def consumer(name):
print("吃货[%s]已上线..." % name)
while True:
baozi = yield
print("包子[%s]出笼了, 被吃货[%s]干掉..." % (baozi, name))
def producer(name):
c1 = consumer('A')
c2 = consumer('B')
c3 = consumer('C')
next(c1)
next(c2)
next(c3)
for i in range(3):
time.sleep(1)
print("熊猫大师[%s]制作了2个庆丰包子......" % name)
c1.send(i)
c2.send(i)
c3.send(i)
producer("Alex")
执行的结果:
C:\Users\lwx548594\PycharmProjects\LiusProject\venv\Scripts\python.exe C:/Users/lwx548594/PycharmProjects/LiusProject/Day17/shengchengqi.py
吃货[A]已上线...
吃货[B]已上线...
吃货[C]已上线...
熊猫大师[Alex]制作了2个庆丰包子......
包子[0]出笼了, 被吃货[A]干掉...
包子[0]出笼了, 被吃货[B]干掉...
包子[0]出笼了, 被吃货[C]干掉...
熊猫大师[Alex]制作了2个庆丰包子......
包子[1]出笼了, 被吃货[A]干掉...
包子[1]出笼了, 被吃货[B]干掉...
包子[1]出笼了, 被吃货[C]干掉...
熊猫大师[Alex]制作了2个庆丰包子......
包子[2]出笼了, 被吃货[A]干掉...
包子[2]出笼了, 被吃货[B]干掉...
包子[2]出笼了, 被吃货[C]干掉...
Process finished with exit code 0
由此可以看到, 每次都实例化出三个consumer函数, 多次的send方法传入参数, 实现伪并发的状态.
伪并发指的是做包子和吃包子看似是同时进行的.
转载请注明:liutianfeng.com » Python伪并发
发表回复
要发表评论,您必须先登录。