簡體   English   中英

如何將帶有 await 的 for 循環轉換為 asyncio.gather()

[英]how to converting a for loop with await into asyncio.gather()

如何使用 asyncio.gather 和 map 編寫以下代碼?

        for i in range(len(data)):
            candlestick = data[i]
            candlesticks = data[0: i + 1]
            await strategy.execute(candlesticks, candlestick.startTime)

你可以這樣做:

from asyncio import gather, create_task
tasks = []
for i in range(len(data)):
    candlestick = data[i]
    candlesticks = data[0: i + 1]
    tasks.append(create_task(strategy.execute(candlesticks, candlestick.startTime)))
results = await gather(*tasks, return_exceptions=False)

如果你想專門使用map() ,你可以這樣做:

from asyncio import gather, create_task

await gather(
    *map(
        lambda i: create_task(
            strategy.execute(data[0: i + 1], data[i].startTime)
        ),
        range(len(data))
)

暫無
暫無

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

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