当前位置: 首页 > 面试题库 >

使用cProfile时返回值

冯流觞
2023-03-14
问题内容

我正在尝试分析实例方法,所以我做了类似的事情:

import cProfile

class Test():

    def __init__(self):
        pass

    def method(self):
        cProfile.runctx("self.method_actual()", globals(), locals())

    def method_actual(self):
        print "Run"

if __name__ == "__main__":
    Test().method()

但是现在,当我希望“方法”返回由“ method_actual”计算出的值时,就会出现问题。我真的不想两次调用“ method_actual”。

还有另一种方法可以使线程安全吗?(在我的应用程序中,cProfile数据保存到以args之一命名的数据文件中,因此它们不会被破坏,以后我可以将它们组合起来。)


问题答案:

我发现您可以执行以下操作:

prof = cProfile.Profile()
retval = prof.runcall(self.method_actual, *args, **kwargs)
prof.dump_stats(datafn)

缺点是它没有记录。



 类似资料:
  • 问题内容: 我得到了以下简单代码: 并且在命中时为null (引发null指针异常)。 我的问题是,即使我将其设置为在每个ip的.s上进行拆分,为什么ipArray仍为null? 问题答案: 使用,您的问题将得到解决。问题是String#split接收到一个正则表达式,点(。)符号在正则表达式中是一个特殊字符,因此您需要对其进行转义以将其解释为纯点,并且反斜杠也是转义字符在Java中,您也必须对其

  • 问题内容: 我正在使用cProfile来分析我的Python程序。基于这次演讲,我给人的印象是KCacheGrind可以解析并显示cProfile的输出。 但是,当我要导入文件时,KCacheGrind只会在状态栏中显示“未知文件格式”错误,而坐在那里什么也不显示。 在我的分析统计信息与KCacheGrind兼容之前,我需要做些特别的事情吗? 套件版本 KCacheGrind 4.3.1 的Pyt

  • 我是Android开发的新手,当然还有碎片。 我想访问main activity中我的片段的控件,但是'find viewbyid'返回null。如果没有片断,代码可以正常工作。

  • 我正在使用routerLink返回我的页面。 当前路线可以有3个级别: 此外,我有一些不同的组件,所以它不一定总是父级,它可以是parent1或parent2,也可以是子级和孙级,例如: 我想要的总是转到上一级,例如: 我所做的是: 但它总是导航到“myurl.com” 我如何解决它? 正如一些用户所建议的,我正在共享我的路由配置: 应用程序内。路由。ts: 在父级中。路由。ts: 如果我在浏览器

  • 问题内容: 好吧,我刚刚遇到一种奇怪的行为,这是我之前从未见过或未曾注意到的。 我正在使用此查询: …阅读3个项目,但同时我想获取总行数。 问题是… …当我使用count时,查询仅返回一行,但是如果我删除 -我会得到3行。显然,我在这里错过了一些东西。 问题答案: 是的,count是一个聚合运算符,它仅返回一行(没有group by子句) 也许做两个单独的查询?让该行返回数据和总行数是没有意义的,

  • 编辑:在测试用例5中,任务似乎处于状态。 我在.NET 4.5中使用System.net.http.HttpClient时遇到了一些奇怪的行为--其中“等待”调用的结果(例如)将永远不会返回。 只有在使用新的Async/Await语言功能和任务API的特定情况下才会出现这种情况--代码似乎总是在只使用延续时工作。

  • 问题内容: 我对虚无和回报有些“困惑”。通常,我知道在方法中使用void而不返回任何内容,而当我想将某些内容返回到调用代码时,则在方法中使用return。 但是在下面的代码中,我可以同时使用两者,而我的问题是,使用哪个? 以及如何确定?与性能有关吗? 通常,在两种情况下我的结果相同。 谢谢! 问题答案: 此方法: 您更改的内部状态,但此方法的调用者不知道的最终值。 在以下方法中,您将提示调用者的最

  • 我的实现中有以下代码行: 我试着在我的测试课上模仿上述内容,如下所示: 但是当我调试测试代码时,我可以看到myService。getTypes正在返回一个空列表。有什么问题? 还有,有没有办法使用args来简化上述模拟?我发现的只是使用传递到方法中的参数,而不是传递到方法中的参数。