Python求索之路9——IO&队列&缓存

Posted ahaii

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python求索之路9——IO&队列&缓存相关的知识,希望对你有一定的参考价值。

协程:

1、单线程运行,无法实现多线程。

2、修改数据时不需要加锁(单线程运行),子程序切换是线程内部的切换,耗时少。

3、一个cpu可支持上万协程,适合高并发处理。

4、无法利用多核资源,因为协程只有一个线程。

使用yield实现协程:

import time
import Queue
def consumer(name):
    print("--->starting eating baozi...")
    while True:
        new_baozi = yield
        print("[%s] is eating baozi %s" % (name,new_baozi))
        #time.sleep(1)

def producer():
    r = con.next()#拥有yield的函数是迭代起,使用next()方法取值。
    r = con2.next()
    n = 0
    while n < 5:
        n +=1
        con.send(n)
        con2.send(n)
        print("\033[32;1m[producer]\033[0m is making baozi %s" %n )

if __name__ == __main__:
    con = consumer("c1")
    con2 = consumer("c2")
    p = producer()

 

以上是关于Python求索之路9——IO&队列&缓存的主要内容,如果未能解决你的问题,请参考以下文章

Python求索之路3——迭代器装饰器生成器正则

Python之路第一课Day10--随堂笔记(异步IO数据库队列缓存之二)

目录Python自动化开发之路

Python之路--Python基础12--异步IORedisMemcached缓存RabbitMQ队列

python 闯关之路四(上)(并发编程与数据库理论)

Python之路 生成器&迭代器