python3异步task_并发,异步编程_Python中的asyncio模块中的Future和Task的区别?,并发,异步编程,python,asyncio - phpStudy...

Python中的asyncio模块中的Future和Task的区别?

问题一

按照官方文档的描述,Task是Futrue的一个subclass,标准库中也分别提供了create_task和create_future。请问这两者有功能上的什么区别?

问题二

对于ensure_future不是很理解,官方文档对于它的描述是:

asyncio.ensure_future(coro_or_future, *, loop=None)

Schedule the execution of a coroutine object: wrap it in a future. Return a Task object.If the argument is a Future, it is returned directly.

这段描述中wrap it in a future和Return a Task应该怎么理解,以下面这段代码为例子,factorial(name, number)显然是一个coroutine object,为什么wrap它到一个future对象后又返回一个Task,拜托大神解释下?

import asyncio

@asyncio.coroutine

def factorial(name, number):

f = 1

for i in range(2, number+1):

print("Task %s: Compute factorial(%s)..." % (name, i))

yield from asyncio.sleep(1)

f *= i

print("Task %s: factorial(%s) = %s" % (name, number, f))

loop = asyncio.get_event_loop()

tasks = [

asyncio.ensure_future(factorial("A", 2)),

asyncio.ensure_future(factorial("B", 3)),

asyncio.ensure_future(factorial("C", 4))]

loop.run_until_complete(asyncio.gather(*tasks))

loop.close()

ps: 上面这段代码,如果tasks设置为下面这样,执行效果也是一样的,为什么官方文档的这个例子非要添加一个ensure_futrue,这有什么用途吗?

tasks = [

factorial("A", 2),

factorial("B", 3),

factorial("C", 4)]

相关阅读:

Maven 如何像 Gradle 一样添加本地依赖库

直播推流demo里 相机预览界面显示不全,左右有白边

如何在用户访问页面的时候生成唯一值

Flask中的用户确认问题

angular 登陆验证

浏览器兼容性

关于 shouldComponentUpdate 控制渲染问题

ionic platform add android一直卡住不动

我一直在想,需要用户登录的高并发场景是如何模拟的?

golang如何终止一个有阻塞io读操作的goroutine?

这个 MySQL procedure 为何会报错

react组件内部使用Immutable 的意义是什么?

vuejs如何组件传递消息到另一个同级组件

webpack怎样给每个loader都写参数?

mysql 使用 join 还是 "," 进行多表查询???

WebApp怎么制作电子书功能?

移动端适配问题

angular2 怎么利用@directive 实现angular1中的ng-controller+ng-app

vue使用vue-infinite-scroll如何跟ajax配合,让page+1

php api调用问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值