3.Task对象
asyncio.create_task(协程对象)
loop.create_task(协程对象)
asyncio.ensure_future(协程对象)
task示例
import asyncio
async def func():
print(1)
await asyncio.sleep(2)
return '1'
async def main():
print('start')
# 创建task对象,创建task对象的同时,会将对应任务添加到事件循环
task1 = asyncio.create_task(func())
task2 = asyncio.create_task(func())
# 执行task1的时候 遇到IO会直接切换到task2执行
res1 = await task1
res2 = await task2
print(res1, res2)
asyncio.run(main())
'''
事件循环执行main之后创建了两个task并且将两个task添加到事件循环
执行task1的时候遇到io切换到task2执行,达到一个并发的效果
'''
async def main():
print('start')
# 创建一个任务列表
task_list = [
# 创建任务,name用户指定任务的名字,自定义可以不设置
asyncio.create_task(func(),name='n1'),
asyncio.create_task(func(),name='n2')
]
# 使用asyncio.wait等待任务列表中的任务全部执行完成
# timeout是等待的超时时间,单位S,可以不设置
# done是接收任务的返回值是执行完的对象集合
# pending是 接收超时没有执行完的对象对象
done, pending = await asyncio.wait(task_list, timeout=10)
# 可以循环返回的执行完的对象集合,通过result拿到返回值
for d in done:
print(d.result())
asyncio.run(main())
3.Task对象的更多相关文章
- Celery 源码解析三: Task 对象的实现
Task 的实现在 Celery 中你会发现有两处,一处位于 celery/app/task.py,这是第一个:第二个位于 celery/task/base.py 中,这是第二个.他们之间是有关系的, ...
- C#中如果用await关键字来await一个为null的Task对象会抛出异常
await & async模式是C#中一个很重要的特性,可以用来提高异步程序(多线程程序)的执行效率.但是如果尝试用await关键字来await一个为null的Task对象,会导致程序抛出Nu ...
- 分布式任务队列 Celery —— Task对象
转载至 JmilkFan_范桂飓:http://blog.csdn.net/jmilk 目录 目录 前文列表 前言 Task 的实例化 任务的名字 任务的绑定 任务的重试 任务的请求上下文 任务的继 ...
- 创建CancellationTokenSource对象用于取消Task
虽然使用线程池ThreadPool让我们使用多线程变得容易,但是因为是由系统来分配的,如果想对线程做精细的控制就不太容易了,比如某个线程结束后执行一个回调方法.恰好Task可以实现这样的需求.这篇文章 ...
- 状态机模式中的Task与对象池
Task 抽象带来Task 首先,假设我们有这么一段逻辑:收到一个参数,先校验格式是否正确,再提取相关的参数出来,执行我们的事务,然后构建结果并返回.伪代码如下: /** * 一个engine类 ** ...
- .Net多线程编程—任务Task
1 System.Threading.Tasks.Task简介 一个Task表示一个异步操作,Task的创建和执行是独立的. 只读属性: 返回值 名称 说明 object AsyncState 表示在 ...
- 多线程之任务: Task 基础, 多任务并行执行, 并行运算(Parallel)
Task - 基于线程池的任务(在 System.Threading.Tasks 命名空间下) 多 Task 的并行执行 Parallel - 并行计算(在 System.Threading.Task ...
- [WPF系列]-数据邦定之DataTemplate 根据对象属性切换模板
引言 书接上回[WPF系列-数据邦定之DataTemplate],本篇介绍如何根据属性切换模板(DataTemplate) 切换模板的两种方式: 使用DataTemplateSelecto ...
- 谈谈Activiti中流程对象之间的关系
详细见:http://www.kafeitu.me/activiti/2012/03/22/workflow-activiti-action.html (咖啡兔好牛!) 详细见: http://blo ...
随机推荐
- Apache DolphinScheduler 架构演进 & Roadmap
<DataFunSummit:大数据存储架构峰会> 2021年4月17日Apache DolphinScheduler PMC chair 代立冬参与 DataFunSummit 分享&l ...
- [C#]使用 AltCover 获得代码覆盖率 - E2E Test 和 Unit Test
背景 在 CI/CD 流程当中,测试是 CI 中很重要的部分.跟开发人员关系最大的就是单元测试,单元测试编写完成之后,我们可以使用 IDE 或者 dot cover 等工具获得单元测试对于业务代码的覆 ...
- HC32L110 系列 M0 MCU 的介绍和Win10下DAP-Link, ST-Link, J-Link的烧录
HC32L110 系列 Cortex M0 MCU Hackaday 在三月份的时候介绍了一款最小的MCU NEW PART DAY: SMALLEST ARM MCU UPROOTS COMPETI ...
- 利用 Word 表格对文字、图文进行排版
在以前,Web 前端工程师利用 <table /> 元素对网页布局进行排版,但是如今却不推荐此元素排版了,而是改用 <div /> 元素和 CSS 弹性布局(或网格布局)对网页 ...
- Codeforces Round #585 (Div. 2) E. Marbles (状压DP),BZOJ大理石(同一道题)题解
题意 林老师是一位大理石收藏家,他在家里收藏了n块各种颜色的大理石,第i块大理石的颜色为ai.但是林老师觉得这些石头在家里随意摆放太过凌乱,他希望把所有颜色相同的石头放在一起.换句话说,林老师需要对现 ...
- 并发编程二、CPU多级缓存架构与MESI协议的诞生
前言: 文章内容:线程与进程.线程生命周期.线程中断.线程常见问题总结 本文章内容来源于笔者学习笔记,内容可能与相关书籍内容重合 偏向于知识核心总结,非零基础学习文章,可用于知识的体系建立,核心内容 ...
- 最短路径算法-迪杰斯特拉(Dijkstra)算法在c#中的实现和生产应用
迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先遍历思想),直到扩展到终点为止 贪心算法(Greedy ...
- sql报错收集
踩坑记录: 当出现如下错误 Not enough parameters for the SQL statement 多半是因为插入时填写的字段名有误 json.decoder.JSONDecodeEr ...
- docker容器数据卷的使用
什么是容器数据卷 docker的理念回顾 将应用和运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对于数据的要求,是希望能够持久化的! 就好比,你安装一个MySQL,结果你把容器删了,就相当于 ...
- KingbaseES触发器介绍
触发器及其作用 触发器(trigger)是用户定义的由事件驱动的特殊过程.一旦定义,所有用户的对应操作均会由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制. 触发器类似于约束,但是比 ...