在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在linux中输出带颜色的文字的方法
Jun 19 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 Python
Python实现Linux的find命令实例分享
Jun 04 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
Jan 09 Python
python实现顺序表的简单代码
Sep 28 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
python常见字符串处理函数与用法汇总
Oct 30 Python
Python语言异常处理测试过程解析
Jan 08 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 Python
Pycharm及python安装详细教程(图解)
Jul 31 Python
解决Pyinstaller打包软件失败的一个坑
Mar 04 Python
Python中如何处理常见报错
Jan 18 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
example1.php
2006/10/09 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
JavaScript&quot;模拟事件&quot;的注意要点详解
2019/02/13 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
Python解析树及树的遍历
2016/02/03 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
用Python实现数据的透视表的方法
2018/11/16 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
python中的测试框架
2020/11/13 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
个人生活学习自我评价范文
2013/11/26 职场文书
毕业自荐书
2013/12/09 职场文书
电子商务专员岗位职责
2013/12/11 职场文书
报关报检委托书
2014/04/08 职场文书
父母对孩子说的话
2014/04/12 职场文书
勤俭节约演讲稿
2014/05/08 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书
python turtle绘图
2022/05/04 Python