【问题标题】:Problems trying to use cProfile尝试使用 cProfile 的问题
【发布时间】:2016-12-22 20:45:30
【问题描述】:

我正在尝试在 Python 2.7 GUI 上运行以下代码:

python -m cProfile -s time abc.py

但是这是我遇到的错误:

>>> python -m cProfile -s time abc.py     
>>>                  ^
>>> SyntaxError: invalid syntax

知道怎么解决吗?

【问题讨论】:

  • 您需要从命令行运行它,而不是 GUI。
  • 旁注:不要将您的模块命名为abc!已经有一个 built-in abc module 用于支持抽象基类(在 Python 的许多部分中使用)。如果您将模块命名为 abc.py 并在与该文件相同的目录中运行 Python,它将隐藏内置模块,并且当您发现 Python(或您执行的某些导入)实际上取决于原始abc 模块。您可能会暂时摆脱它,直到您不小心依赖于 abc 并且一切都死了。
  • 感谢 ShadowRanger 的留言! abc 只是我用于这个问题的一个随机名称,不过将来会记下该注释

标签: python cprofile


【解决方案1】:

您需要从命令行运行它,而不是 GUI 或交互式 Python 提示符。看到>>> 意味着您处于交互式 Python 提示符下。

在命令行也就是终端窗口,切换到abc.py所在的目录,输入:

python -m cProfile -s time abc.py  

我明白了:

python -m cProfile -s time abc.py 
         2 function calls in 0.000 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
        1    0.000    0.000    0.000    0.000 abc.py:1(<module>)

选项-m 这样做:

-m mod : 将库模块作为脚本运行(终止选项列表)

Python 版本为 2.7.12。

编辑

如果您想从交互式提示中执行此操作,可能最简单的方法是使用IPythonJupyter Notebook。然后你可以这样做:

[1] %run -m cProfile -s time abc.py

【讨论】:

  • 我已经把目录改成了abc.py所在的位置。另外,如果是因为目录地址,它不会说“cProfile”导致语法错误,而是说“找不到文件”而不是我想?
  • 当您看到&gt;&gt;&gt; 时,您正处于交互式 Python 解释器中。您需要在操作系统的命令行上才能使用此命令。
  • 是的,在提示中它确实有效,但我在想我是否可以在解释器中这样做,因为解释器对我来说更灵活地复制和粘贴结果和分析。
【解决方案2】:

python -m ... 本身并不是 Python 语法:它是从外部启动 Python 的语法。因此,Python 解释器(GUI 与否)将无法处理该命令。 (由于&gt;&gt;&gt; 提示符,我们知道您在 Python 解释器内部工作。)

“从外面”是什么意思?这意味着您需要在命令窗口(在 Windows 中)的 &gt; 提示符处或在运行 bash shell(在其他可能的操作系统中)的终端窗口中的 $ 提示符处键入该命令。

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 2022-01-14
    • 1970-01-01
    • 2019-01-14
    • 2020-04-17
    • 2014-09-27
    • 1970-01-01
    • 2011-07-07
    • 2014-08-14
    相关资源
    最近更新 更多