首页 > 解决方案 > 在 Python 中使用 asyncio 打破无限循环

问题描述

我希望能够在指定的时间后打破无限循环。我希望我可以用 Pythons 实现这一点asyncio.wait_for

我有以下示例

import asyncio

async def infinite_loop():
    i = 0
    while True:
        i = i + 1

async def main():
    try:
        await asyncio.wait_for(infinite_loop(), 1)
    except:
        print("Break out!")

asyncio.run(main())

我希望infinite_loop它在一秒钟后停止,但它没有这样做,我不明白为什么。

我正在寻找这种行为,因为我正在为可能会创建进入无限循环的函数的类中的初学者编写测试脚本。我需要一种方法来可靠地摆脱在unittest. 目前,当它遇到这样的功能时,它会挂起并且不会运行后续测试,即使它们会通过。

标签: pythonpython-asyncio

解决方案


推荐阅读