python Task在协程调用实例讲解

1、说明

Tasks用于并发调度协程,通过asyncio.create_task(协程对象)创建Task对象,使协程能够加入事件循环,等待调度执行。除使用asyncio.create_task()函数外,还可使用低级loop.create_task()或ensure_future()函数。推荐使用手动实例Task对象。

2、使用注意

Python3.7中添加到asyncio.create_task函数。在Python3.7之前,可以使用低级asyncio.ensure_future函数。

3、实例

import asyncio

async def func():
    print(1)
    await asyncio.sleep(2)
    print(2)
    return "返回值"

async def main():
    print("main开始")
    # 创建协程,将协程封装到一个Task对象中并立即添加到事件循环的任务列表中,等待事件循环去执行(默认是就绪状态)。
    task1 = asyncio.create_task(func())
    # 创建协程,将协程封装到一个Task对象中并立即添加到事件循环的任务列表中,等待事件循环去执行(默认是就绪状态)。
    task2 = asyncio.create_task(func())
    print("main结束")
    # 当执行某协程遇到IO操作时,会自动化切换执行其他任务。
    # 此处的await是等待相对应的协程全都执行完毕并获取结果
    ret1 = await task1
    ret2 = await task2
    print(ret1, ret2)

asyncio.run(main())

知识点扩展:

python asyncio 协程调用task步骤

import asyncio

async def compute(x, y):
    print("Compute %s + %s ..." % (x, y))
    await asyncio.sleep(1.0)
    return x + y

async def print_sum(x, y):
    result = await compute(x, y)
    print("%s + %s = %s" % (x, y, result))

loop = asyncio.get_event_loop()
loop.run_until_complete(print_sum(1, 2))
loop.close()

到此这篇关于python Task在协程调用实例讲解的文章就介绍到这了,更多相关python Task如何在协程调用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 在python里创建一个任务(Task)实例

    与事件循环进行交互,最基本的方式就是任务,任务封装了协程和自动跟踪它的状态.任务是Future类的子类,所以其它协程可以等待任务完成,或当这些任务完成获取返回结果. 在这里通过create_task()函数来创建一个任务实例,然后事件循环就运行这个任务,直到这个任务返回为止: import asyncio async def task_func(): print('in task_func') return 'the result' async def main(loop): print('cr

  • python Task在协程调用实例讲解

    1.说明 Tasks用于并发调度协程,通过asyncio.create_task(协程对象)创建Task对象,使协程能够加入事件循环,等待调度执行.除使用asyncio.create_task()函数外,还可使用低级loop.create_task()或ensure_future()函数.推荐使用手动实例Task对象. 2.使用注意 Python3.7中添加到asyncio.create_task函数.在Python3.7之前,可以使用低级asyncio.ensure_future函数. 3.实

  • python中Task封装协程的知识点总结

    说明 1.Task是Future的子类,Task是对协程的封装,我们把多个Task放在循环调度列表中,等待调度执行. 2.Task对象可以跟踪任务和状态.Future(Task是Futrue的子类)为我们提供了异步编程中最终结果的处理(Task类还具有状态处理功能). 3.把协程封装成Task,加入一个队列等待调用.刚创建Task的时候不执行,遇到await就执行. 实例 import asyncio async def func(): print(1) await asyncio.sleep(

  • python 生成器协程运算实例

    一.yield运行方式 我们定义一个如下的生成器: def put_on(name): print("Hi {}, 货物来了,准备搬到仓库!".format(name)) while True: goods = yield print("货物[%s]已经被%s搬进仓库了."%(goods,name)) p = put_on("bigberg") #输出 G:\python\install\python.exe G:/python/untitled

  • Python并发编程协程(Coroutine)之Gevent详解

    Gevent官网文档地址:http://www.gevent.org/contents.html 基本概念 我们通常所说的协程Coroutine其实是corporateroutine的缩写,直接翻译为协同的例程,一般我们都简称为协程. 在linux系统中,线程就是轻量级的进程,而我们通常也把协程称为轻量级的线程即微线程. 进程和协程 下面对比一下进程和协程的相同点和不同点: 相同点: 我们都可以把他们看做是一种执行流,执行流可以挂起,并且后面可以在你挂起的地方恢复执行,这实际上都可以看做是con

  • python编程使用协程并发的优缺点

    协程 协程是一种用户态的轻量级线程,又称微线程. 协程拥有自己的寄存器上下文和栈,调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈.因此:协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说法:进入上一次离开时所处逻辑流的位置. 优点: 1.无需线程上下文切换的开销 2.无需原子操作锁定及同步的开销 3.方便切换控制流,简化编程模型 4.高并发+高扩展性+低成本:一个CPU支持上万的协程都不

  • Python进阶之协程详解

    目录 协程 协程的应用场景 抢占式调度的缺点 用户态协同调度的优势 协程的运行原理 Python 中的协程 总结 协程 协程(co-routine,又称微线程)是一种多方协同的工作方式.当前执行者在某个时刻主动让出(yield)控制流,并记住自身当前的状态,以便在控制流返回时能从上次让出的位置恢复(resume)执行. 简而言之,协程的核心思想就在于执行者对控制流的 “主动让出” 和 “恢复”.相对于,线程此类的 “抢占式调度” 而言,协程是一种 “协作式调度” 方式. 协程的应用场景 抢占式调

  • python进阶之协程你了解吗

    目录 协程的定义 协程和线程差异 协程的标准 协程的优点 协程的缺点 python中实现协程的方式 async&await关键字 事件循环 协程函数和协程对象 await Task对象 asyncio.Future对象 futures.Future对象 异步迭代器 什么是异步迭代器? 什么是异步可迭代对象? 异步上下文管理器 uvloop 异步redis 异步MySQL 爬虫 总结 协程的定义 协程(Coroutine),又称微线程,纤程.(协程是一种用户态的轻量级线程) 作用:在执行 A 函数

  • Python中的协程(Coroutine)操作模块(greenlet、gevent)

    目录 一.协程介绍 1.介绍 2.举例 3.优点如下: 4.缺点如下: 5.总结协程特点: 二.greenlet(绿叶)模块 1.安装模块 2.greenlet实现状态切换 3.效率对比 三.gevent模块 1.安装 2. 用法介绍 1.遇到io主动切换 2. 查看threading.current_thread().getName() 3.Gevent之同步与异步 4.Gevent之应用 1. 服务端 2.多线程并发多个客户端 一.协程介绍 协程:英文名Coroutine,是单线程下的并发,

  • spring和quartz整合,并简单调用(实例讲解)

    工作中会定时任务~简单学习一下. 第0步: 工欲善其事必先利其器,首先要做的自然是导包了. 在spring配置包扫描以及在 pom导入包 spring.xml: pom.xml 1.在spring-quartz.xml(和spring.xml同一个位置)配置相关属性 xml的头部每个人都可能不一样,这个自己要用的时候注意. quartz表达式根据自己需求去写,不列举了,这里的是1秒一次的. 2.Task包下配置类 我们这边将定时任务存放到一个包中,命名为task.用spring的自动注解serv

  • 基于python select.select模块通信的实例讲解

    要理解select.select模块其实主要就是要理解它的参数, 以及其三个返回值. select()方法接收并监控3个通信列表, 第一个是所有的输入的data,就是指外部发过来的数据,第2个是监控和接收所有要发出去的data(outgoing data),第3个监控错误信息在网上一直在找这个select.select的参数解释, 但实在是没有, 哎...自己硬着头皮分析了一下. readable, writable, exceptional = select.select(inputs, ou

随机推荐