Aggregating an async generator to a tuple(将异步生成器聚合到元组)
本文介绍了将异步生成器聚合到元组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
尝试聚合异步生成器的结果,如下所示:
async def result_tuple():
async def result_generator():
# some await things happening in here
yield 1
yield 2
return tuple(num async for num in result_generator())
我收到一个
TypeError:""Async_Generator""对象不可迭代
执行async for行时。
但是PEP 530似乎建议它应该是有效的:
异步理解
我们建议允许将异步用于内部列表、集合和字典理解。等待PEP 525批准,我们还可以允许创建异步生成器表达式。
示例:
- 设置理解:{AGEN()中I为I异步};
- 列表理解:[I Async for I in AGEN()];
- 字典理解:{i:i**2 AGEN()中的i异步};
- 生成器表达式:(agen()中i的i**2异步)。
发生了什么,如何将异步生成器聚合到单个tuple中?
推荐答案
在PEP摘录中,理解在同一项目符号列表中并排列出,但生成器表达式与其他理解有很大不同。
没有"tuple理解"这回事。tuple()的参数构成异步生成器:
tuple(num async for num in result_generator())
该行相当于tuple(result_generator())。然后,元组尝试同步迭代生成器,并引发TypeError。
async def result_tuple():
async def result_generator():
# some await things happening in here
yield 1
yield 2
return tuple([num async for num in result_generator()])
这篇关于将异步生成器聚合到元组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:将异步生成器聚合到元组
基础教程推荐
猜你喜欢
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
