通过重组导入来优化Python

时间:2015-03-12 02:00:05

标签: python performance

我正在努力提高程序的速度。除了删除冗余,使用循环而不是执行每一行,我想知道是否将所有方法放在一个主程序中来调用它们,或者将这些方法分成其他较小的程序,然后导入那些较小的程序并在主程序中调用,使得速度的差异?

另外,请看下面两种导入,我想第一种更快?

  1. from ProgramA import MethodX
    
    MethodX.do something
    
  2. import ProgramA
    
    ProgramA.MethodX.do something
    

1 个答案:

答案 0 :(得分:1)

你的问题的答案是否定的。在谈论程序的速度时。你提到的所有事情都不重要。导入差异不会使您的程序显着加快或将代码置于for循环中。如果你想了解程序效率真正重要的东西,请搜索Big O表示法并阅读其中的一些内容。但是,例如,考虑尝试找到最大的共同点。

找到两个数字的GCD的第一件事就是这样......

def GCD (num1, num2):
    for i in reversed(range(1, num1)):
         if (num1 % i == 0) and (num2 % i == 0):
             return i

现在,这个程序可以解决您的问题。但这不是解决问题的最佳方式。最好的方法叫做Euclid的算法...例如。

def GCD(num1, num2):
    if (num2 == 0):
       return num1
    else:
       return GCD(num2, num1 % num2)

此算法更好。因此,故事的寓意是,当你谈论程序的速度和效率时,你正试图找到解决问题的最佳方法,如上面的例子。像你上面谈到的那些小事情并不重要。但是,如果您真的需要更快的速度,请查看多处理和并行计算。