【问题标题】:how to speed up code?如何加快代码速度?
【发布时间】:2010-06-10 03:59:21
【问题描述】:

我想加快我的代码编译速度。我在互联网上搜索过,听说 psyco 是一个非常适合提高速度的工具。我已经搜索过,但可以找到一个网站供下载。

到目前为止,我已经在我的 python 中安装了任何其他库或模块。 psyco 用户,请告诉我们在哪里可以下载 psyco 及其安装和使用程序? 我用的是windows vista和python 2.6,这个能用吗??

【问题讨论】:

  • 您的代码编译速度异常缓慢是否有特定原因?
  • 如前所述,我需要运行某种方法,该方法涉及打开读取 4 个文件,此方法被调用 10,000 次
  • 通常一个方法会编译一次,运行一万次。您不需要加快编译速度,但可能需要加快执行速度。

标签: python optimization


【解决方案1】:

我建议不要依赖这些工具,无论如何,psych 正在被新的 python 实现所取代,如 PyPyunladen swallow。要“免费”加速,您可以使用CythonShedskin。无论如何,我认为这不是加速代码的正确方法。

如果您正在寻找速度,这里有一些提示:

  1. 分析
  2. 分析
  3. 分析

您应该使用cProfile 模块并找到瓶颈,然后进行优化。

如果python中的优化不够,重写Cython中的相关部分就可以了。

【讨论】:

    【解决方案2】:

    Psyco 不会加快编译速度(事实上,它会减慢编译速度)。但是,如果您的问题是 Python 中的编译速度,那么您的代码就有一些严重的问题。

    如果您想提高运行时性能,Psyco 确实适用于 32 位操作系统和 Python 2.5 版。最新版本是 Psyco 的第一个 Google 结果:http://psyco.sourceforge.net/

    Psyco 不再是一个“有趣”的项目,因为 Python 3.x 获得了 Unladen Swallow,大多数开发人员的注意力都集中在了它和 PyPy 之间。

    还有其他提高性能的方法,不限于CythonShed Skin

    【讨论】:

      【解决方案3】:

      看来你不想加快编译速度,但想加快执行速度。

      如果是这样,我的口头禅是“少做。”保存结果并保留它们,不要一遍又一遍地重新读取相同的文件。一次从文件中读取大量数据并使用它。

      特别是在文件上,如果您从每个文件中读取一点数据并在执行此操作时在多个文件之间切换,您的性能将非常糟糕。只需完整地读入每个文件,一次一个,然后使用它们。

      【讨论】:

      • 我有格式为 3.343445 1 3.54564 1 4.345535 1 2.453454 1 等等的文件数据,最多 1000 行,并且我有给定文件的数字,例如 a=2.44443 我需要找到的行号文件中最接近给定数字“a”的数字我现在如何通过将整个文件加载到列表中并比较每个元素并找到最接近的其他更好更快的方法来做到这一点?
      • 您可以创建一个新的数据对列表:my_list = [(abs(n-a), n) for n in file_list],然后对其进行排序并挑选出第一个元素。
      【解决方案4】:
      • 使用适当的数据结构。如果你看到你做了很多事情

        if element in list
        #or 
        list.index(element) 
        

        那么你可能会更好地使用集合和字典。

      • 不要创建列表只是为了对其进行迭代,使用生成器或 itertools 模块。
      • 阅读Python Performance Tips
      • 如前所述,进行分析。

      【讨论】:

        猜你喜欢
        • 2014-10-07
        • 1970-01-01
        • 2023-03-16
        • 2023-03-30
        • 2011-08-06
        • 1970-01-01
        • 2018-02-14
        • 1970-01-01
        相关资源
        最近更新 更多