Python 等待一切完成(异步IO)

Python 等待一切完成(异步IO),python,python-asyncio,Python,Python Asyncio,我在玩弄asyncio,但我无法实现我想要实现的目标。这是我的密码 随机导入 导入异步 异步定义my_long_操作(s:str): 打印(“在”,s上开始操作) 等待asyncio.sleep(3) 打印(“结束”,s) def随机_字符串(长度:int=10): 字母表=\ [chr(x)表示范围内的x(ord('a')、ord('z')+1)] result=“” 对于范围内的i(长度): 结果+=随机选择(字母表) 返回结果 def get_字符串(n=10): 对于范围(n)中的i:

我在玩弄
asyncio
,但我无法实现我想要实现的目标。这是我的密码

随机导入
导入异步
异步定义my_long_操作(s:str):
打印(“在”,s上开始操作)
等待asyncio.sleep(3)
打印(“结束”,s)
def随机_字符串(长度:int=10):
字母表=\
[chr(x)表示范围内的x(ord('a')、ord('z')+1)]
result=“”
对于范围内的i(长度):
结果+=随机选择(字母表)
返回结果
def get_字符串(n=10):
对于范围(n)中的i:
s=随机字符串()
产量
异步定义多个(循环):
任务=列表()
对于get_strings()中的s:
task=asyncio.create_任务(my_long_操作))
asyncio.sure_future(任务,循环=循环)
打印(“确定”)
loop=asyncio.get\u event\u loop()
循环。运行_直到_完成(几个(循环))
#loop.run_forever()
loop.close()
现在我的问题如下。 我想同时运行所有的
my_long_操作
s,等待它们全部完成。问题是,当我运行代码时,会出现以下错误:

Task was destroyed but it is pending!
task: <Task pending coro=<my_long_operation() done, defined at test.py:4> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7f75274f7168>()]>>
任务已销毁,但它处于挂起状态!
任务:
这似乎是有道理的,因为我的脚本在开始这些操作之后就结束了(没有等待它们完成)

所以我们来到了我真正的问题:我该怎么做?在终止脚本之前,我如何启动这些任务并等待它们完成,而不使用
永远运行
(因为
永远运行
从不退出Python…)


谢谢

确保未来基本上是“把它放在事件循环中,然后不要用它来打扰我”的方法。相反,您需要等待所有异步函数的完成。为此,如果您对结果不是特别感兴趣,或者如果您想要结果,请使用:

tasks = map(my_long_operation, get_strings())
await asyncio.wait(list(tasks), loop=loop)
print('OK')

我们如何从主协程(上例中的几个())实现这一点