- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
对于普通的函数调用,程序状态主要由一个简单的调用堆栈来描述。它在未捕获的异常后作为回溯打印出来,可以使用 inspect.stack
检查,并且可以在断点后显示在调试器中。
在生成器、基于生成器的协程和基于async def
的协程的存在下,我认为调用堆栈是不够的。在脑海中形象化程序状态的好方法是什么?我如何在运行时检查它?
有函数inspect.getgeneratorstate
和inspect.getcoroutinestate
,但它们只提供有关生成器/协程是创建、运行、挂起还是关闭的信息。在状态为 RUNNING
的情况下,我希望能够检查生成器或协程当前正在执行的实际行号以及与它可能调用的其他函数对应的堆栈帧。如果它是 SUSPENDED
,我想检查它向其发送数据或产生数据的其他生成器/协程。
编辑:我找到了一个相关的 question on SO这让我想到了这个excellent article这解释了我在这个问题中提出的所有问题。
最佳答案
你只需要在所有“传统”框架中找出生成器和协程的所有实例——(在所有框架的所有对象中递归搜索它们,或者你可以尝试使用垃圾收集器(gc)模块获取对所有这些实例的引用)
生成器和协程分别具有 gi_frame 和 cr_frame 属性。
关于python - 如何在存在生成器/协程的情况下检查程序状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39801488/
在我的设置中,我试图有一个界面 Table继承自 Map (因为它主要用作 map 的包装器)。两个类继承自 Table - 本地和全局。全局的将有一个可变的映射,而本地的将有一个只有本地条目的映射。
Rust Nomicon 有 an entire section on variance除了关于 Box 的这一小节,我或多或少地理解了这一点和 Vec在 T 上(共同)变体. Box and Vec
我是一名优秀的程序员,十分优秀!