Python伪并发

Python Liemer_Lius 1383℃ 0评论

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伪并发

喜欢 (1)

发表回复