从 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 脚本的主要内容,如果未能解决你的问题,请参考以下文章

shell 向python传参数,空格引发的问题

python使用subprocess.Popen运行bat脚本时报不支持输入重新定向错误分析

python如何重新执行脚本?

Crontab定时任务中python3脚本无法运行问题解决

python学习笔记2--shell脚本传参数到python脚本中

python学习笔记2--shell脚本传参数到python脚本中