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
そしてがasyncio.Task.all_tasks(loop=loop)
してタスクを検査します。取り消された/完了したタスクはすべてループにバインドされていることがわかります。新しいループを閉じて取得する代わりに、どのようにループを維持し、終了/キャンセルされたタスクのみをクリアすることができますか?
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の実行後に空のセットが表示されます: