在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+matplotlib绘制饼图散点图实例代码
Jan 20 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
Python合并多个Excel数据的方法
Jul 16 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
对django2.0 关联表的必填on_delete参数的含义解析
Aug 09 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
Apr 20 Python
django 数据库返回queryset实现封装为字典
May 19 Python
如何真正的了解python装饰器
Aug 14 Python
Python实现扫码工具的示例代码
Oct 09 Python
Python命令行参数argv和argparse该如何使用
Feb 08 Python
Django Paginator分页器的使用示例
Jun 23 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判断电子邮件是否正确方法
2018/12/04 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
js活用事件触发对象动作
2008/08/10 Javascript
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
AJAX 网页保留浏览器前进后退等功能
2011/02/12 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
python转换摩斯密码示例
2014/02/16 Python
跟老齐学Python之类的细节
2014/10/13 Python
5种Python单例模式的实现方式
2016/01/14 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
企业节能减排实施方案
2014/03/19 职场文书
导航工程专业自荐信
2014/09/02 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
硕士学位论文评语
2014/12/31 职场文书
综合实践活动报告
2015/02/05 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书