在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实现跨文件全局变量的方法
Jul 07 Python
tensorflow建立一个简单的神经网络的方法
Feb 10 Python
python2.7读取文件夹下所有文件名称及内容的方法
Feb 24 Python
python爬虫之模拟登陆csdn的实例代码
May 18 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
python写入文件自动换行问题的方法
Jul 05 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
pytorch进行上采样的种类实例
Feb 18 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
看看如何用Python绘制小米新版天价logo
Apr 20 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
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
2015/12/29 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
php分页查询的简单实现代码
2017/03/14 PHP
javascript入门·对象属性方法大总结
2007/10/01 Javascript
js兼容标准的表格变色效果
2008/06/28 Javascript
使用js修改客户端注册表的方法
2013/08/09 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
微信小程序日历效果
2018/12/29 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
python映射列表实例分析
2015/01/26 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
pycharm配置pyqt5-tools开发环境的方法步骤
2019/02/11 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
日语翻译个人求职的自我评价
2013/10/14 职场文书
汽车专业毕业生推荐信
2013/11/12 职场文书
中专自我鉴定
2014/02/05 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
2014个人年终工作总结范文
2014/12/15 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
教师旷工检讨书
2015/08/15 职场文书
老舍《猫》教学反思
2016/02/17 职场文书