【发布时间】:2020-05-27 14:20:00
【问题描述】:
所有关于“coroutine was never awaited”的搜索结果都是针对那些试图即发即弃或确实忘记等待的人。这不是我的情况。
我想像经常使用生成器一样使用协程:我在这里创建协程,而所有变量都在手边,但我不确定是否需要运行它。比如:
options = {
'a': async_func_1(..., ...),
'b': async_func_2(),
'c': async_func_3(...),
}
和其他地方:
appropriate_option = figure_the_option_out(...)
result = await options[appropriate_option]
【问题讨论】:
-
怎么办
'a': lambda: async_func_1(..., ...)等,然后result = await options[appropriate_option]()? -
他说了什么。你正在创建你永远不会等待的协程。你不应该那样做。如果您真的打算等待,请仅致电
async_func_*,而不仅仅是填写您的字典。 -
我为什么不应该这样做?创建协程的成本是多少?
-
不是不应该做(只有你才能真正回答这个问题),而是不应该必须去做。我认为您正在尝试“提高性能”?做这样的抢先优化可以获得多少性能?如果你收获很多,那就去做,否则就是浪费。
-
我真的在尝试优化 IDE 和调试工具,通过仅消除我知道不适用的特定警告来帮助我避免错误。在这种特殊情况下,我阅读了警告并且我知道没关系,所以我只想安抚这种特殊情况的警告。
标签: python python-asyncio