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

rod*_*der 8 python heap profiling twisted

我试图用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()
Run Code Online (Sandbox Code Playgroud)

配置文件浏览器中查看Heapy配置文件结果需要做什么?

Jea*_*one 6

看在孔雀鱼网站,没有找到关于如何有启动配置文件浏览器的任何信息后,我开始寻找周围的孔雀鱼源,并最终发现孔雀鱼/ heapy/Prof.py,在其中我看到了包含此行文档字符串结尾:

[0] heapy_Use.html#heapykinds.Use.pb
Run Code Online (Sandbox Code Playgroud)

然后,记住,我有看到一些文件给guppy.hpy作为使用的返回类型,我检查,看看是否guppy.hpy()PB()会做任何事情.确实如此.这似乎是探查器浏览器的启动方式.我不确定这是不是你问的问题,但在我回答你问题的其他可能部分之前我需要弄明白.:)

使这些信息可用的最简单方法似乎是在您的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())
...
Run Code Online (Sandbox Code Playgroud)

然后,只要您想查看配置文件浏览器,就可以访问/配置文件浏览器.在"PB"呼叫阻塞直到轮廓浏览器退出(注意,只是关闭窗口,与WM破坏按钮似乎并没有引起它返回 - 只有退出菜单项似乎),所以您的服务器已挂起,直到您关闭窗口,但出于调试目的,似乎它可能没问题.