首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Twisted.web中使用Heapy的内存配置文件浏览器

在Twisted.web中使用Heapy的内存配置文件浏览器
EN

Stack Overflow用户
提问于 2009-08-25 23:22:04
回答 1查看 2.9K关注 0票数 8

我正在尝试用Heapy分析扭曲的python代码。例如(伪代码):

代码语言:javascript
复制
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中查看堆配置文件结果,需要执行哪些操作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-24 23:18:56

在浏览了guppy网站,没有找到任何关于如何在那里启动配置文件浏览器的信息后,我开始查找guppy源代码,最终找到了guppy/heapy/Prof.py,在它的末尾,我看到了一个包含以下行的文档字符串:

代码语言:javascript
复制
[0] heapy_Use.html#heapykinds.Use.pb

然后,记住我已经看到一些文档将guppy.hpy的返回类型指定为Use,我检查了一下guppy.hpy().pb()是否可以执行任何操作。事实上,确实是这样。这似乎就是profiler浏览器的启动方式。我不确定这是否是你想问的问题,但我需要先弄清楚,然后才能回答你问题的另一个可能部分。:)

使这些信息可用的最简单方法似乎是在您的web服务器中创建一个资源,该资源将调用Use.pb作为其呈现过程的一部分。还有其他方法,例如在应用程序中嵌入检修孔,或使用信号处理程序来触发它,但我喜欢资源的想法。所以,举个例子:

代码语言:javascript
复制
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销毁按钮关闭窗口似乎不会导致它返回-只有退出菜单项可能会),所以您的服务器将挂起,直到您关闭窗口,但出于调试目的,这似乎是正常的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1331561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档