gpt4 book ai didi

python - 将 @property 装饰器与 @asyncio.coroutine 一起使用而不可能产生 yield from 吗?

转载 作者:行者123 更新时间:2023-11-28 16:31:25 25 4
gpt4 key购买 nike

我想要一个类似下面的类

Foo(object):
@property
@asyncio.coroutine
def bar(self):
# This will need to run some blocking code via loop.run_in_executor()
return 'bar'

然后我想访问属性而无需 yield from

# In a loop...
foo = Foo()
foo.bar #This will return a generator object, but I want it to return 'bar'.
yield from foo.bar #This will return 'bar', but I don't want to do the yield from.

这样的事情可能吗?

最佳答案

运行协程生成器的方法是使用来自另一个协程的yield from(Python 3.5 中的await)。 yield from (await) 允许一个协程驱动另一个协程,这通常意味着您拥有最终由事件循环驱动的链接协程链。

另一种选择是使用类似任务的包装器,如 asyncio.async(Python 3.5 中的 ensure_future())来驱动协程。

如果没有上述之一,根据您的观察,它只是一个惰性生成器对象(或协程,在 Python 3.5 中)。

关于python - 将 @property 装饰器与 @asyncio.coroutine 一起使用而不可能产生 yield from 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31531380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com