正确的功能(my_deamon_fun())未正确分析

时间:2015-10-21 17:33:51

标签: python matplotlib twisted memory-profiling twisted.web

我们通过使用python memory-profiler和guppy来检测方法:my_daemon_fun())。

要分析代码,我需要做的就是:

 STEP#1 -> decorate the my_daemon_fun() with "profile" decorator   
 STEP#2 -> start memory profiling 
 STEP#3 -> end memory profiling

这样的事情:

@profile                                               => STEP#1    
@inlineCallbacks
def my_daemon_fun(self):
    """
    Monitor my daemons
    """
    if self.running == True:
        try:
            hp = hpy()                                 => STEP#2
            before = hp.heap()
            yield self._lock.acquire()
            .....
            if ((x_running == False) or (b_running == False)):
                log.error('Daemons are not running, restarting...')
                yield self._restart_daemons()
        except:
            log.exception('Exception restarting daemons')
        finally:
            yield self._lock.release()
            reactor.callLater(MY_DAEMON_MONITOR_INTERVAL, self.my_daemon_fun)
            after = hp.heap()                         => STEP#3
            leftover = after - before

现在我们运行脚本来调用方法:my_daemon_fun()。 在运行脚本之后我们看到内存分析正在发生,但被分析的函数是我们用@profile修饰的那个:

Line #    Mem usage    Increment      Line Contents
1176     42.3 MiB      0.0 MiB       def unwindGenerator(*args, **kwargs):
1177     42.3 MiB      0.0 MiB           try:
1178     42.3 MiB      0.0 MiB               gen = f(*args, **kwargs)
1183     42.3 MiB      0.0 MiB           if not isinstance(gen, types.GeneratorType):
1187     42.3 MiB      0.0 MiB           return _inlineCallbacks(None, gen, Deferred())

我怀疑生成器 inlineCallback 装饰器是否禁止正确的代码进行分析。

我正在研究为什么实际的功能(即my_daemon_fun())没有被分析? 同时,如果你能在这里帮助我们,那就太好了。

0 个答案:

没有答案