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

 更新时间:2020年04月25日 15:55:09   作者:caimouse  
这篇文章主要介绍了在python里创建一个任务(Task)实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

与事件循环进行交互,最基本的方式就是任务,任务封装了协程和自动跟踪它的状态。任务是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中POST调用Restful接口示例

    Python中POST调用Restful接口示例

    这篇文章主要介绍了Python之POST调用Restful接口示例,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • Python ftfy 包的使用案例解析

    Python ftfy 包的使用案例解析

    Unicode是一种字符编码标准,用于表示文本中的字符,通过安装 ftfy 软件包,可以在 Python 中使用它提供的函数和工具来处理和修复文本中的 Unicode 问题,从而确保文本在各种应用中的正确性和可靠性,这篇文章主要介绍了Python ftfy包的理解和使用,需要的朋友可以参考下
    2023-05-05
  • 使用Python的Zato发送AMQP消息的教程

    使用Python的Zato发送AMQP消息的教程

    这篇文章主要介绍了使用Python的Zato发送AMQP消息的教程,主要是基于一些Zato的图形化界面进行操作,需要的朋友可以参考下
    2015-04-04
  • 10分钟用python搭建一个超好用的CMDB系统

    10分钟用python搭建一个超好用的CMDB系统

    这篇文章主要介绍了10分钟用python搭建一个超好用的CMDB系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 利用python代码管理Word文档属性信息

    利用python代码管理Word文档属性信息

    在Word文档管理中,文档属性包含与文档有关的关键信息,如标题、作者、创建日期等,是进行文档管理的重要工具,本文将展示如何利用Python代码来灵活操控Word文档的属性信息,从而满足个性化与批量化文档处理的需求,需要的朋友可以参考下
    2024-05-05
  • 简介Python的collections模块中defaultdict类型的用法

    简介Python的collections模块中defaultdict类型的用法

    这里我们来简介Python的collections模块中defaultdict类型的用法,与内置的字典类最大的不同在于初始化上,一起来看一下:
    2016-07-07
  • 用代码帮你了解Python基础(2)

    用代码帮你了解Python基础(2)

    这篇文章主要用代码帮你了解Python基础,使用列表,元组和条件判断的示例代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 基于python实现在excel中读取与生成随机数写入excel中

    基于python实现在excel中读取与生成随机数写入excel中

    最近接个项目,项目要求是这样的:在一份已知的excel表格中读取学生的学号与姓名,再将这些数据放到新的excel表中的第一列与第二列,最后再生成随机数作为学生的考试成绩,具体实现代码大家参考下本文
    2018-01-01
  • Python编程中类与类的关系详解

    Python编程中类与类的关系详解

    在本文里小编给大家整理了关于Python编程中类与类的关系以及相关代码知识点,需要的朋友们可以学习下。
    2019-08-08
  • 基于tensorflow指定GPU运行及GPU资源分配的几种方式小结

    基于tensorflow指定GPU运行及GPU资源分配的几种方式小结

    今天小编就为大家分享一篇基于tensorflow指定GPU运行及GPU资源分配的几种方式小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02

最新评论