Python 3.x 在不关闭循环的情况下清除中断的事件循环

Python 3.x 在不关闭循环的情况下清除中断的事件循环,python-3.x,python-asyncio,Python 3.x,Python Asyncio,请尝试以下代码: import asyncio async def fun1(): #block await asyncio.sleep(10) loop = asyncio.get_event_loop() count = 0 while count < 10: count += 1 print(count) try: fut = asyncio.ensure_future(asyncio.wait_for(fun1(),1))

请尝试以下代码:

import asyncio

async def fun1():
    #block
    await asyncio.sleep(10)

loop = asyncio.get_event_loop()
count = 0
while count < 10:
    count += 1
    print(count)
    try:
        fut = asyncio.ensure_future(asyncio.wait_for(fun1(),1))
        loop.run_until_complete(fut)
    except:
        pass
导入异步IO
异步def fun1():
#挡块
等待异步睡眠(10)
loop=asyncio.get\u event\u loop()
计数=0
当计数小于10时:
计数+=1
打印(计数)
尝试:
fut=asyncio.sure_future(asyncio.wait_for(fun1(),1))
循环。运行直到完成(fut)
除:
通过

然后通过
asyncio.Task.all_tasks(loop=loop)
检查任务。您将看到所有取消/完成的任务仍绑定到循环。我如何保持循环,只清除已完成/取消的任务,而不是关闭并获取新的循环

任务绑定到循环,这意味着如果不存在对它们的引用,它们将在下次gc运行时被垃圾收集:

import asyncio
import gc


def main():
    #  your code here
main()


print('Before gc:', asyncio.Task.all_tasks())

gc.collect()

print('After gc:', asyncio.Task.all_tasks())
在gc运行之后,您将看到空集