python看进程,线程,协程

2018-03-29  本文已影响0人  洛克黄瓜

参考链接:https://www.jianshu.com/p/c6053a4c3dd5

进程写(process)

线程(thread)

协程(coroutine)


def coroutine(func):
    def ret():
        f = func()
        f.next()
        return f
    return ret

@coroutine
def consumer():
    print "Wait to getting a task"
    while True:
        n = (yield)
        print "Got %s",n

import time

def producer():
    c = consumer()
    task_id = 0
    while True:
        time.sleep(1)
        print "Send a task to consumer" % task_id
        c.send("task %s" % task_id)

if __name__ == "__main__":
    producer()

上面这个例子中,coroutine实际上是个解释器用来自动处理生成器的预激工作。
producer每次通过调用consumer的send函数去启动consumer,yield能够返回一个值然后卡住自己讲控制权交给主程序,主程序再去执行producer的任务。
python常常利用yield构造生成器从而实现协程。
python本身也有gevent,greenlet等库能够实现协程概念的操作。

上一篇下一篇

猜你喜欢

热点阅读