问题描述
我收到此错误:
D:\pythonstuff\demo.py:28: DeprecationWarning:自 Python 3.8 起不推荐将协程对象显式传递给 asyncio.wait(),并计划在 Python 3.11 中移除。 await asyncio.wait([
等了 1 秒!
等了 5 秒!
时间过去:0小时:0分:5秒
当我运行 code 时:
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
有什么好的替代品吗?我不希望每次启动应用程序时都在控制台中显示警告。
编辑:我不想只是隐藏错误,这是不好的做法,我正在寻找其他方法来做相同或类似的事情,而不是另一个异步库来恢复旧功能。
解决方法
您可以按照文档中推荐的方式调用它here
文档中的示例:
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())
])