gpt4 book ai didi

python - 在旧异步函数仍在运行时启动新的异步函数

转载 作者:太空宇宙 更新时间:2023-11-03 20:19:17 25 4
gpt4 key购买 nike

全部函数创建没有可用股票的股票列表。然后它运行alert(一个循环函数),在库存可用时提醒我。我需要同时运行所有这些alert循环,但all会等待第一个股票变得可用,然后再开始下一个循环。

我尝试使用线程为每只股票创建一个线程,但我无法等待 Thread.start()

async def all(self, ctx):
stocks = requests.get(f'https://api.torn.com/torn/?
selections=stocks&key={api}').json()['stocks']
zero = []
acronymz = []
for items in stocks:
if stocks[items]['available_shares'] == 0:
zero.append(items)
acronymz.append(stocks[items]['acronym'])

await ctx.send(f'Zero: {zero}')

for acronyms in zero:
print(acronyms)
# Thread(target=alert, args=(ctx, acronyms)).start()
await alert(ctx, acronyms)
# await asyncio.sleep(0.5)


async def alert(ctx, items):
stocks = requests.get(f'https://api.torn.com/torn/?selections=stocks&key={api}').json()['stocks'][items]
if stocks['available_shares'] == 0:
await ctx.send(f'I am now watching {stocks["acronym"]}. I will let you know when there are shares available!')
while stocks['available_shares'] == 0:
stocks = requests.get(f'https://api.torn.com/torn/?selections=stocks&key={api}').json()['stocks'][items]
print(stocks)
await asyncio.sleep(5)
await ctx.send(f'There are {stocks["available_shares"]} in {stocks["acronym"]}')

股票= https://pastebin.com/FhuR4d4R [“股票”]

最佳答案

您可以为事件循环安排任务,而无需立即等待它们。这是使用 asyncio.gather 的示例

await asyncio.gather(*(alert(ctx, acronyms) for acronyms in zero))

关于python - 在旧异步函数仍在运行时启动新的异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58257522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com