从 shell 环境分析 Python 脚本
Posted
技术标签:
【中文标题】从 shell 环境分析 Python 脚本【英文标题】:Profiling Python script from shell environment 【发布时间】:2015-02-05 01:14:48 【问题描述】:我正在交互式 shell 环境(IDE,如果重要的话)中分析 Python 3.4 脚本。通常我使用cProfile
来分析函数。但是,这次我在脚本中有一些***代码。 “***”是指代码不在函数定义中。 cProfile.run
不会接受文件名 - 通常我会传递一个函数。
为了解决这个问题,我将***代码包装在 main()
函数中,执行它以在 shell 命名空间中创建 main
,然后运行 cProfiler.run('main()')
。这很烦人 - 我想在***代码中生成几个变量,我不想尝试从main()
全部返回它们。
我已经仔细阅读了How can you profile a python script?和How to profile my code?的类似问题。 它们为从命令行分析***代码和从 shell 分析函数提供了很好的解决方案,但我认为它们没有解决这个特定问题。
【问题讨论】:
【参考方案1】:我有办法完成这项工作,但我认为可能还有更好的方法。
cProfile.run(compile(open(filename, "rb").read(), filename, 'exec'))
其中filename
是脚本的文件名。
【讨论】:
我删除了您的免责声明,因为回答这个问题并不重要。作为对该问题的评论可能会更好。 @AdamSmith 好的,谢谢 - 我以前从未回答过我自己的问题。对关心的人重复一遍:因为我已经在这里回答了我自己的问题,所以我不会投票或接受我自己的答案。以上是关于从 shell 环境分析 Python 脚本的主要内容,如果未能解决你的问题,请参考以下文章
python使用subprocess.Popen运行bat脚本时报不支持输入重新定向错误分析