我有一个
int
,我想让它可以等待,我该怎么做?
Context :我实现了一个异步生成器来生成可等待的对象。但是,它需要等待第一个(而且只有第一个)值,以便它可以产生其他值。
因此,第一个值已经等待,但其他值按原样产生,调用者将等待它们。但是,我不想在调用者中添加 ifawaitable 逻辑,这就是为什么我想让第一个值可等待。
我考虑的第一种方法是创建一个简单的异步身份函数,但我想知道这样的函数是否已经存在? (或者如果有更清洁的方法)
async def make_awaitable(value):
return value
您可以创建自己的包装类,实现 await 方法将整数(或任何其他非等待对象)转换为可等待对象。这种方法应该返回一个能够预期值的迭代器。
下面是它的用法说明:
class AwaitableInt:
def __init__(self, value):
self.value = value
def __await__(self):
yield self.value
# Usage example
async def my_generator():
awaitable_int = AwaitableInt(42)
yield awaitable_int
# You can now iterate over the async generator and await the first value
async def main():
async for value in my_generator():
await value
# Do something with the awaited value
asyncio.run(main())
await 方法,它产生一个迭代器,在迭代时给出值,由 AwaitableInt 类实现,它封装了一个整数。可以在异步函数中使用 this 等待 AwaitableInt 对象。 通过开发具有独特 await 实现的包装类,您可以使用此方法创建任何可等待的非等待对象。 希望这会奏效。