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运行之后,您将看到空集