【发布时间】:2021-05-11 21:09:26
【问题描述】:
这里有一个玩具示例来说明我的问题:假设我有一个函数 get_all_foos() 多次调用 get_one_foo()。对 get_one_foo() 的每次调用都会调用 do_sql_query(),它实际上通过调用 await db_conn.fetch(<some sql>) 来检索一个 foo。
我的三个函数中的哪一个应该被标记为异步的?如果我将它们全部标记为异步,是否会增加开销?
我的心理模型是,使用 await 调用函数会增加某种调度开销,如果该函数本身不执行任何 IO,它只会调用最终执行 IO 的其他函数,则没有任何意义。但是我的心智模型仍然可能来自线程框架,而不是协程框架。
【问题讨论】:
-
在异步程序中,大多数函数肯定应该被标记为异步。只有少数例外...
标签: python python-3.x python-asyncio