从命令行分析 python 3.6 模块

Luc*_*uca 7 python profiling cprofile python-3.6

我有一个 python 项目,我使用该标志将应用程序作为模块执行-m。所以像这样:

python -m apps.validate -i input.mp4
Run Code Online (Sandbox Code Playgroud)

现在,我想使用命令行对其进行分析。因此,内联示例建议将 cProfile 本身调用为一个模块。但是,我不能做类似的事情:

python -m cProfile apps.validate -i input.mp4
Run Code Online (Sandbox Code Playgroud)

但是,这会导致错误“没有这样的文件或目录”。由于相对导入,我不能直接进入apps目录并启动。validate.py

有没有办法在命令行上分析模块?

小智 8

除了在 shell 中运行 cProfile,也许您可​​以通过在 apps.validate 中添加一些代码或创建一个新脚本并像这样导入 apps.validate 在 python 脚本中使用 cProfile。下面可能有一些错字:)

import cProfile
import sys

def run_validate(args): 
    # run your apps.validate code with shell arguments args here
    pass

if __name__ == '__main__':
    pr = cProfile.Profile()
    pr.enable()
    run_validate(*sys.argv)
    pr.disable()
    pr.print_stats()
Run Code Online (Sandbox Code Playgroud)

然后运行原始脚本: python -m apps.validate -i input.mp4

  • pr.dump_stats(filename) 会将其保存到文件中。 (2认同)