So I have been learning a lot the last couple of days about how profilers in python work. And now I have a clue of how the _hotshot module -the C module of hotshot which does all the work- works. In the process I noticed at least one unchecked malloc() use! And that while the Python documentation actually asks to use the python heap (by using
PyMem_Malloc()) as that is managed by the python memory manager and can keep track of how much memory is used.
While figuring out how hotshot does it's work I stumbled across some
PyFrame_* calls. Of course there is no documentation to find about this. Sigh. And that while Python is always so well documented! I also saw some
PyEval_* calls which are undocumented. At least some of the
PyEval_* calls are in the documentation, just not the ones used. Great.