python - python asycio协程可以有没有等待的代码路径吗?
问题描述
具有不包含等待语句的代码路径的协程是否存在任何问题或副作用?
考虑以下示例,其中将回调作为参数提供给协程,但该回调可能是常规函数或协程:
import asyncio
import inspect
async def foo(mycallback):
if inspect.iscoroutinefunction(mycallback):
await mycallback()
else:
mycallback()
...
在 python 控制台中尝试简单的示例似乎表明没有问题,但想知道是否可能会出现更微妙的问题。
解决方案
如果您不等待,那么您将阻止应该运行的其他代码,因为异步是关于共享资源的。因此,如果常规代码运行得很快,这不是什么大问题,但如果它可能很慢,它就会阻塞一切。
在常规代码中,异步的替代方案是基于线程的编程。在这里,Python 在感觉要运行其他线程时会中断您的代码,因此您遇到的阻塞问题较少。
推荐阅读
- vue.js - v-on 处理程序中的 Vue 错误:“TypeError:无法读取 null 的属性”
- javascript - 如何使用 React 按钮组件向下滚动页面?
- python - 循环 json 数据并合并 df 数据
- google-cloud-platform - 如何使用 Colab 在 Google Drive 和 Google Cloud Storage 之间复制大文件
- python - 启动带有脚本的 python 控制台
- python - Python/Pandas 在相似分组的数据中查找缺失项,嵌套迭代效率不高
- javascript - 按下后退按钮时的 Next.js 行为
- javascript - 如何让我的 If 语句在函数调用之后运行
- python - 如何实现用户搜索的位置选择器?
- python - 未找到 GPT-J Python 脚本