替代asyncio.wait?

我收到此错误:

D:pythonstuffdemo.py:28: DeprecationWarning: 自 Python 3.8 起不推荐将协程对象显式传递给 asyncio.wait(),并计划在 Python 3.11 中删除。等待 asyncio.wait([

等了1秒!
等了5秒!
经过的时间:0小时:0分:5秒

进程以退出代码 0 结束

当我运行代码时:

import asyncio
import time

class class1():
    async def function_inside_class(self):
        await asyncio.sleep(1)
        print("Waited 1 second!")

    async def function_inside_class2(self):
        await asyncio.sleep(5)
        print("Waited 5 second!")

def tic():
    global _start_time
    _start_time = time.time()

def tac():
    t_sec = round(time.time() - _start_time)
    (t_min, t_sec) = divmod(t_sec,60)
    (t_hour,t_min) = divmod(t_min,60)
    print('Time passed: {}hour:{}min:{}sec'.format(t_hour,t_min,t_sec))

object = class1()


async def main():
    tic()
    await asyncio.wait([
        object.function_inside_class(),
        object.function_inside_class2()
        ])
    tac()

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()

有什么好的替代品asyncio.wait吗?每次启动应用程序时,我都不希望控制台中出现警告。

编辑:我不想只是隐藏错误,这是不好的做法,我正在寻找其他方法来做相同或类似的事情,而不是另一个异步库来恢复旧功能。

回答

您可以按照此处的文档中建议的方式调用它

文档中的示例:

async def foo():
    return 42

task = asyncio.create_task(foo())
done, pending = await asyncio.wait({task})

所以你的代码会变成:

await asyncio.wait([
    asyncio.create_task(object.function_inside_class()),
    asyncio.create_task(object.function_inside_class2())
    ])


以上是替代asyncio.wait?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>