码迷,mamicode.com
首页 > 编程语言 > 详细

python协程的使用

时间:2018-08-31 15:46:25      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:div   任务   lam   while   cep   try   one   创建   一个   

 

1、Python对协程的支持是通过generator(生成器 yield)实现的。协程执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。

2、调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

3、Python的yield不但可以返回值,它还可以接收调用者发出的参数。代码中的r.send(None)启动生成器后,可继续发送参数给任务,r.send(anything)

from functools import partial  # 固定参数


def task(renwu_id, n, m):
    for i in range(n, m):
        print(f任务{renwu_id}-结果: {i})
        v = yield
        # yield


def sched(*tasks):
    tasks = list(map(lambda x: x(), tasks))  # 调用任务函数,生成器列表
    while tasks:  # 循环
        try:
            r = tasks.pop(0)  # 取出第一个任务 开始执行
            r.send(None)  # 启动生成器 

            tasks.append(r)  # 任务未结束 添加任务到列表最后一个 
        except StopIteration:  # 任务结束,丢弃取出的任务
            pass


t1 = partial(task, 1, 10, 13)  # 创建任务  patial用来固定好参数
t2 = partial(task, 2, 20, 23)

sched(t1, t2)  # 处理任务

 

python协程的使用

标签:div   任务   lam   while   cep   try   one   创建   一个   

原文地址:https://www.cnblogs.com/tangpg/p/9565898.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!