作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
任何人都可以提供有关如何在 python asyncio 模块的任务和协程之间进行选择的实用建议吗?
如果我要异步实现某事,我可以做下面两个中的任何一个 -
import asyncio
@asyncio.coroutine
def print_hello():
print('Hello')
loop = asycio.get_event_loop()
loop.run_until_complete(print_hello)
loop.close()
或
import asyncio
@asyncio.coroutine
def print_hello():
print('Hello')
print_task = asyncio.ensure_future(print_hello)
loop = asycio.get_event_loop()
loop.run_until_complete(asyncio.wait_for(print_task))
loop.close()
是什么因素决定了选择以上2种方法中的哪一种?
最佳答案
“通常,当您想使用 yield from 将协程直接耦合到调用父协程时,您会使用协程。这种耦合驱动子协程并强制父协程在继续之前等待子协程返回. 另一方面,任务不必由父协程驱动,因为它可以驱动自己。” - shongololo
(请不要在评论里回复)
关于python - 什么时候应该使用任务而不是协程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31904944/
在我的设置中,我试图有一个界面 Table继承自 Map (因为它主要用作 map 的包装器)。两个类继承自 Table - 本地和全局。全局的将有一个可变的映射,而本地的将有一个只有本地条目的映射。
Rust Nomicon 有 an entire section on variance除了关于 Box 的这一小节,我或多或少地理解了这一点和 Vec在 T 上(共同)变体. Box and Vec
我是一名优秀的程序员,十分优秀!