gpt4 book ai didi

python - 如何在存在生成器/协程的情况下检查程序状态?

转载 作者:太空宇宙 更新时间:2023-11-04 03:04:47 24 4
gpt4 key购买 nike

对于普通的函数调用,程序状态主要由一个简单的调用堆栈来描述。它在未捕获的异常后作为回溯打印出来,可以使用 inspect.stack 检查,并且可以在断点后显示在调试器中。

在生成器、基于生成器的协程和基于async def 的协程的存在下,我认为调用堆栈是不够的。在脑海中形象化程序状态的好方法是什么?我如何在运行时检查它?

有函数inspect.getgeneratorstateinspect.getcoroutinestate,但它们只提供有关生成器/协程是创建、运行、挂起还是关闭的信息。在状态为 RUNNING 的情况下,我希望能够检查生成器或协程当前正在执行的实际行号以及与它可能调用的其他函数对应的堆栈帧。如果它是 SUSPENDED,我想检查它向其发送数据或产生数据的其他生成器/协程。

编辑:我找到了一个相关的 question on SO这让我想到了这个excellent article这解释了我在这个问题中提出的所有问题。

最佳答案

你只需要在所有“传统”框架中找出生成器和协程的所有实例——(在所有框架的所有对象中递归搜索它们,或者你可以尝试使用垃圾收集器(gc)模块获取对所有这些实例的引用)

生成器和协程分别具有 gi_frame 和 cr_frame 属性。

关于python - 如何在存在生成器/协程的情况下检查程序状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39801488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com