使cProf只提供10个最耗时的任务,或按时间按相反的顺序对它们进行排序

时间:2017-12-15 17:16:50

标签: python time compilation profiling

我在终端上运行以下代码行以获取我的程序的个人资料。

python3 -m cProfile -s time  main.py

然而,它输出的输出是巨大的。我只想知道10个最耗时的任务或按升序排序。我怎么能告诉cprof?

3 个答案:

答案 0 :(得分:0)

我在this其他答案找到了解决方案。解决方案是在要分析的脚本内部使用cProfile,而不是在命令行外部使用。

我的脚本如下所示:

def run_code_to_be_profiled():
    pass

if __name__ == "__main__":
    import cProfile

    pr = cProfile.Profile()
    pr.enable()

    run_code_to_be_profiled()

    pr.disable()
    pr.print_stats(sort='time')

我运行脚本并获得有用的输出。

答案 1 :(得分:0)

尝试 python3 -m cProfile -s cumtime main.py

答案 2 :(得分:0)

要打印名为“function_to_profile”的函数的 10 个最耗时的任务,您可以运行以下命令:

if __name__ == "__main__":
    import cProfile
    from pstats import Stats

    pr = cProfile.Profile()
    pr.enable()

    function_to_profile()

    pr.disable()
    stats = Stats(pr)
    stats.sort_stats('tottime').print_stats(10)