我正在尝试用Heapy分析扭曲的python代码。例如(伪代码):
from twisted.web import resource, server
from twisted.internet import reactor
from guppy import hpy
class RootResource(resource.Resource):
render_GET(self, path, request):
return "Hello World"
if __name__ == '__main__':
h = hpy()
port = 8080
site = server.Site(RootResource(mq))
reactor.listenTCP(port, site)
reactor.run()要在profile browser中查看堆配置文件结果,需要执行哪些操作
发布于 2009-09-24 23:18:56
在浏览了guppy网站,没有找到任何关于如何在那里启动配置文件浏览器的信息后,我开始查找guppy源代码,最终找到了guppy/heapy/Prof.py,在它的末尾,我看到了一个包含以下行的文档字符串:
[0] heapy_Use.html#heapykinds.Use.pb然后,记住我已经看到一些文档将guppy.hpy的返回类型指定为Use,我检查了一下guppy.hpy().pb()是否可以执行任何操作。事实上,确实是这样。这似乎就是profiler浏览器的启动方式。我不确定这是否是你想问的问题,但我需要先弄清楚,然后才能回答你问题的另一个可能部分。:)
使这些信息可用的最简单方法似乎是在您的web服务器中创建一个资源,该资源将调用Use.pb作为其呈现过程的一部分。还有其他方法,例如在应用程序中嵌入检修孔,或使用信号处理程序来触发它,但我喜欢资源的想法。所以,举个例子:
class ProfileBrowser(Resource):
def render_GET(self, request):
h.pb()
return "You saw it, right?"
...
root = RootResource(mq)
root.putChild("profile-browser", ProfileBrowser())
...然后,只要您想查看配置文件浏览器,就可以访问/ profile -browser。"pb“调用阻塞,直到配置文件浏览器退出(注意,仅仅使用wm销毁按钮关闭窗口似乎不会导致它返回-只有退出菜单项可能会),所以您的服务器将挂起,直到您关闭窗口,但出于调试目的,这似乎是正常的。
https://stackoverflow.com/questions/1331561
复制相似问题