Eu recomendo Dowser . É muito fácil de configurar e você precisa de zero alterações no seu código. Você pode visualizar a contagem de objetos de cada tipo ao longo do tempo, visualizar a lista de objetos ativos, ver referências a objetos ativos, tudo a partir da interface da web simples.
# memdebug.py
import cherrypy
import dowser
def start(port):
cherrypy.tree.mount(dowser.Root())
cherrypy.config.update({
'environment': 'embedded',
'server.socket_port': port
})
cherrypy.server.quickstart()
cherrypy.engine.start(blocking=False)
Você importa o memdebug e chama o memdebug.start. Isso é tudo.
Eu não tentei o PySizer ou o Heapy. Eu apreciaria as opiniões dos outros.
ATUALIZAR
O código acima é para CherryPy 2.X
, CherryPy 3.X
o server.quickstart
método foi removido e engine.start
não recebe o blocking
sinalizador. Então, se você estiver usandoCherryPy 3.X
# memdebug.py
import cherrypy
import dowser
def start(port):
cherrypy.tree.mount(dowser.Root())
cherrypy.config.update({
'environment': 'embedded',
'server.socket_port': port
})
cherrypy.engine.start()