【发布时间】:2015-02-12 21:01:18
【问题描述】:
在 Python(以及最流行的编程语言)中导入包/模块的“正常”方式是编写一个导入语句,例如import math 在新创建的 Python 模块的开头。
如果我们在一个方法中导入另一个模块(我们多次使用这个方法)会发生什么,解释器会再次导入我们的模块(定义和语句)吗?这会影响我们程序的性能吗?
简而言之,以下之间的性能差异是什么:
import math
def int_square(n):
return int(math.sqrt(n))
和:
def int_square(n):
import math
return int(math.sqrt(n))
编辑: 我刚刚用以下代码行测试了这一点:
import time
import math
def calculate(n):
return math.sqrt(n)
def calculate2(n):
import math
return math.sqrt(n)
t1 = time.time()
for i in range(1000000):
calculate(3)
t2 = time.time()
print(t2 - t1)
t1 = time.time()
for i in range(1000000):
calculate2(3)
t2 = time.time()
print(t2 - t1)
输出(在 i3 第三代处理器上)
calculate() -> 0.444s
calculate2() -> 1.500s
【问题讨论】:
-
所以我的理论被证明是正确的?
-
是的,但我仍然不明白为什么这被标记为重复。谢谢你,先生!
-
我同意,人们应该始终了解一种语言的基本原则,包括效率和性能。
标签: python