风-fmgao

导航

协程小示例

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2018/6/19 15:03
# @File    : 协程.py


# 协程:单线程下实现并发
import time


def producer():
    g = consumer()
    next(g)
    for i in range(10000000):
        g.send(i)


def consumer():
    while True:
        res = yield


start_time = time.time()
producer()
stop_time = time.time()
print('并发:', stop_time - start_time)  # 并发: 4.239000082015991


# 串行
import time


def producer():
    res = []
    for i in range(10000000):
        res.append(i)
    return res


def consumer(res):
    pass


start_time = time.time()
res = producer()
consumer(res)
stop_time = time.time()
print('串行', stop_time - start_time)  # 串行 2.4110000133514404

posted on 2018-06-19 16:27  风-fmgao  阅读(120)  评论(0编辑  收藏  举报