【问题标题】:How do I time script execution time in PyCharm without adding code every time?如何在 PyCharm 中计时脚本执行时间而不每次都添加代码?
【发布时间】:2016-02-26 15:57:01
【问题描述】:

目前我只是在我的代码周围添加以下几行:

import time
start_time = time.time()

# my code here

print "time elapsed: {:.2f}s".format(time.time() - start_time)

是否可以在不向我想要计时的每个脚本添加代码的情况下实现相同的目标?在运行配置中添加一些东西还是使用插件?

【问题讨论】:

  • 当我在 PyCharm 中运行我的代码时,我总是知道默认运行需要多长时间。

标签: python pycharm


【解决方案1】:

您可以通过点击“配置文件”按钮(位于“运行”、“调试”和“覆盖范围运行”按钮的右侧)来分析您的脚本:

在输出中,您会找到脚本本身的名称,以及运行它所需的时间。

注意:该功能在 Linux 平台的 PyCharm PROFESSIONAL 2017.1 中可用;其他安装可能不提供分析器按钮。

【讨论】:

  • 最近 2017 年发布的 Pycharm 社区版不存在我可以从终端利用的 ide 排序。
  • @AloyASen 你可以看看这个问题:stackoverflow.com/questions/6786990/…
  • 如果您有有效的 .edu 电子邮件,请在此处获取 PyCharm Professional 的免费 1 年许可证:jetbrains.com/student
  • 由于 cProfile 工具的开销,这将为您的运行增加额外的执行时间
  • 似乎有点矫枉过正,我想要的只是执行需要多长时间
【解决方案2】:

由于不是每个人都有可以测量脚本运行时间的 PyCharm Pro,这里有一个使用装饰器的简单解决方案。我们只需要添加一行代码就可以测量任意函数的运行时间如下:

import time

def timeit(func):
    """
    Decorator for measuring function's running time.
    """
    def measure_time(*args, **kw):
        start_time = time.time()
        result = func(*args, **kw)
        print("Processing time of %s(): %.2f seconds."
              % (func.__qualname__, time.time() - start_time))
        return result

    return measure_time

@timeit
def func():
    for _ in range(3):
        time.sleep(1)

if __name__ == "__main__":
    func()

输出:

Processing time of func(): 3.00 seconds.

【讨论】:

    【解决方案3】:

    只需编写相应的单元测试(适用于社区版)。

    from unittest import TestCase
    
    from yourscript import yourcode
    
    class TestSol(TestCase):
        def benchmark(self):
            res = yourcode('banana')
            self.assertEqual(res, 77)
    

    PyCharm 整齐地显示每次测试所用的时间。

    另一种解决方案是用time 包装解释器。
    但因为它会在其他方面有所帮助,所以我建议走单元测试之路。

    【讨论】:

      【解决方案4】:

      我知道已经很晚了,但我想要同样的东西,这就是我所做的:

      在您的代码目录中创建另一个 python 文件:

      import time
      st=time.time()
      import test
      print("----%.2f----"%(time.time()-st))
      

      其中 test 是您的程序名称。 因此,如果您想运行任何程序,只需更改测试即可从此处运行它。

      请记住,如果您没有使用 import 会正常运行代码:

      if __name__=="__main__":
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多