python任务编排_在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 >

in task_func

task completed 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)实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值