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


Posted in Python onApril 25, 2020

与事件循环进行交互,最基本的方式就是任务,任务封装了协程和自动跟踪它的状态。任务是Future类的子类,所以其它协程可以等待任务完成,或当这些任务完成获取返回结果。

在这里通过create_task()函数来创建一个任务实例,然后事件循环就运行这个任务,直到这个任务返回为止:

import asyncio
 
async def task_func():
  print('in task_func')
  return 'the result'
 
async def main(loop):
  print('creating task')
  task = loop.create_task(task_func())
  print('waiting for {!r}'.format(task))
  return_value = await task
  print('task completed {!r}'.format(task))
  print('return value: {!r}'.format(return_value))
 
event_loop = asyncio.get_event_loop()
try:
  event_loop.run_until_complete(main(event_loop))
finally:
  event_loop.close()

结果输出如下:

creating task
waiting for <Task pending coro=<task_func() running at D:\work\csdn\python_Game1\example\asyncio_create_task.py:4>>
in task_func
task completed <Task finished coro=<task_func() done, defined at D:\work\csdn\python_Game1\example\asyncio_create_task.py:4> result='the result'>
return value: 'the result'

补充知识:python里创建任务执行一半时取消任务执行

下例子来演示创建任务执行一半时取消任务执行,这时会抛出异常CancelledError,同时也提供了一个机会来删除占用资源等等:

import asyncio
 
async def task_func():
  print('in task_func, sleeping')
  try:
    await asyncio.sleep(1)
  except asyncio.CancelledError:
    print('task_func was canceled')
    raise
  return 'the result'
 
def task_canceller(t):
  print('in task_canceller')
  t.cancel()
  print('canceled the task')
 
async def main(loop):
  print('creating task')
  task = loop.create_task(task_func())
  loop.call_soon(task_canceller, task)
  try:
    await task
  except asyncio.CancelledError:
    print('main() also sees task as canceled')
 
event_loop = asyncio.get_event_loop()
try:
  event_loop.run_until_complete(main(event_loop))
finally:
  event_loop.close()

结果输出如下:

creating task
in task_func, sleeping
in task_canceller
canceled the task
task_func was canceled
main() also sees task as canceled

以上这篇在python里创建一个任务(Task)实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过BF算法实现关键词匹配的方法
Mar 13 Python
Python的collections模块中的OrderedDict有序字典
Jul 07 Python
python交互式图形编程实例(一)
Nov 17 Python
《Python学习手册》学习总结
Jan 17 Python
Python实现统计给定字符串中重复模式最高子串功能示例
May 16 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
python numpy数组的索引和切片的操作方法
Oct 20 Python
Django框架中间件(Middleware)用法实例分析
May 24 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
python为什么会环境变量设置不成功
Jun 23 Python
Selenium 配置启动项参数的方法
Dec 04 Python
python调用百度AI接口实现人流量统计
Feb 03 Python
python 实现任务管理清单案例
Apr 25 #Python
python多进程 主进程和子进程间共享和不共享全局变量实例
Apr 25 #Python
python使用Thread的setDaemon启动后台线程教程
Apr 25 #Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 #Python
Python多线程:主线程等待所有子线程结束代码
Apr 25 #Python
解决python父线程关闭后子线程不关闭问题
Apr 25 #Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 #Python
You might like
?算你??的 PHP 程式大小
2006/12/06 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
JavaScript Split()方法
2015/12/18 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
2016/10/08 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
JavaScript简单计算人的年龄示例
2017/04/15 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
2017/06/09 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
js实现弹窗效果
2020/08/09 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
什么是类的返射机制
2016/02/06 面试题
学习自我鉴定
2014/02/01 职场文书
村道德模范事迹材料
2014/08/28 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
Pandas-DataFrame知识点汇总
2022/03/16 Python