簡體   English   中英

python asyncio.gather 使用輸入作為返回值的一部分

[英]python asyncio.gather use input as part of return value

我有一個 function 之類的東西

async def funcn(input: input_type) -> output_type:
  ....
  return output

我使用 asyncio.gather 來調用它,例如:

output = await asyncio.gather(*[funcn(input) for input in input_list])

這里的返回值將是 input_list 中每個輸入的 output 列表。

但我希望 input_list 中每個輸入的返回值類似於 [(input, output)]。 在不改變 function 的實現的情況下是否有可能?

asyncio.gather的返回將以與輸入相同的順序返回,因此您只需將 zip 您的input_listoutput一起返回:

for input_value, output_value in zip(input_list, output):
    print(input_value, output_value)

除了zip的回答中的 zip 之外,您始終可以使用另一個返回輸入的 function 和 output 來包裝funcn 這允許您在不修改處理 function 的情況下裝飾 output:

async def wrap_funcn(input):
    output = await funcn(input)
    return input, output

...
ins_and_outs = await asyncio.gather(*[wrap_funcn(input) for input in input_list])

這在input_list是一個迭代器的情況下很有用,它的內容是在調用gather()之后耗盡它的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM