我有一个功能
policies.js
我想为列表中的多个元素异步调用此函数
async def hello(a):
await asyncio.sleep(2)
print(a)
类似这样,但下面的代码一个接一个地运行。
list = ['words','I','need','to','print','parallely']
有没有更好的方法来做到这一点?我使用过 for word in list:
await hello(word)
但不确定如何在循环中使用它们。
答案 0 :(得分:1)
这是它应该如何工作的示例:
import asyncio
list_1 = 'hi i am cool'.split()
async def hello(a):
await asyncio.sleep(2)
print(a)
async def run_tasks():
tasks = [hello(word) for word in list_1]
await asyncio.wait(tasks)
def main():
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(run_tasks())
loop.close()
main()
示例输出:
am
i
cool
hi
以上代码主要用于演示,但新的更简单的方法是:
def main2():
asyncio.run(run_tasks())
main2()
示例输出:
i
hi
cool
am
注意:
正如评论中所建议的,为了保持输入的顺序,将 run_tasks 定义为:
async def run_tasks():
tasks = [hello(word) for word in list_1]
await asyncio.gather(*tasks)