python - Asyncio 递归限制和最大线程处理
问题描述
我对 asyncio 很陌生,想知道我是否会遇到任何与 asyncio 相关的递归限制或线程限制,并使用以下函数。我的朋友认为使用 asyncio 进行递归看起来很奇怪,所以我想获得第二个意见。不担心任何递归函数中典型的最大递归深度异常,只是担心它如何与递归元素如何交互,因为每个循环都是异步的,因此也产生了新的协程。
async def walk_elements(context: 'Context', element, key_path: list = None):
if key_path is None:
key_path = []
if isinstance(element, str):
if some_condition(key_path[-1]):
await do_something_else(context, element, key_path)
return
if isinstance(element, list):
await asyncio.gather(*[walk_elements(
context, v, key_path + [i.to_bytes(2, byteorder='big')])
for i, v in enumerate(element)])
if isinstance(element, dict):
await asyncio.gather(*[walk_elements(
context, v, key_path + [k]) for k, v in element.items()])
谢谢您的帮助!
解决方案
推荐阅读
- ios - 如何在 Swift 4 中通过 SwiftyJson 和 Almofire 创建多个按钮?
- typescript - Typescript 和 CSS 模块类型
- swift - 以编程方式切换 MKUserTrackingBarButtonItem
- r - 使用动画以编程方式控制 R-Shiny 滑块上的播放/暂停
- verilog - 你能在同一个模块中同时写行为和结构的verilog吗?
- python - 如何更改数据框中的值用整数替换浮点数
- node.js - Nodejs:我没有在.on('data'上获得请求的数据
- c# - c#将国家缩写返回到国家名称
- mysql - 如何将两个 MySQL 查询的结果合二为一?
- node.js - Nginx HTTPS 失败,但 node.js https 工作