如何修复此问题:TypeError:期望一个未来列表,而不是任务列表

2024-04-23 08:21:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用asyncio启动一系列子流程。create_subprocess_exec:

procs = []
for i in range(5):
    proc = await asyncio.create_subprocess_exec(...)
    procs.append(proc.wait())
    # doesn't work with this line either:
    procs.append(asyncio.create_task(proc.wait()))

await asyncio.wait(*procs,..)
# doesn't work with await asyncio.as_completed either. asyncio.gather do work, but I'd like to add timeout limit and return back to my code as earlier as possible.

例外情况是: TypeError:需要一个未来列表,而不是任务列表 针对行“wait asyncio.wait(*procs,…) Python的版本是3.8

尽管官方文件警告我不要自己创造未来,但如果有办法将proc转换为未来,我愿意尝试

谢谢


Tags: toasyncioascreatewithprocawaitwork
1条回答
网友
1楼 · 发布于 2024-04-23 08:21:56

正如消息所说,您需要提供一个未来的列表。使用*操作符可以解包列表并将其成员作为单个位置参数传递。正确的调用应该是:

await asyncio.wait(procs)

您的原始代码使用了gather(),因为gather()实际上期望等待值作为单独的位置参数

相关问题 更多 >