python导入处理速度

python导入处理速度,python,python-module,Python,Python Module,基本上,我想知道在每个模块中导入标准库是否比在一个模块中只导入一次标准模块并在其他模块中重用它好/坏。换句话说,我想知道以下两种代码之间是否存在速度/性能差异: """ One way - Just importing time module only once """ # /usr/bin/python # mytime.py import time def get_time(): return time.time() # /usr/bin/python # usingtime.


基本上,我想知道在每个模块中导入标准库是否比在一个模块中只导入一次标准模块并在其他模块中重用它好/坏。换句话说,我想知道以下两种代码之间是否存在速度/性能差异:

"""
One way - Just importing time module only once
"""
# /usr/bin/python
# mytime.py
import time

def get_time():
    return time.time()


# /usr/bin/python
# usingtime.py
import mytime

print (mytime.time() - mytime.time.time())



"""
Another way - importing time module as needed
"""
# /usr/bin/python
# mytime.py
import time

def get_time():
    return time.time()


# /usr/bin/python
# usingtime.py
import time
import mytime

print (mytime.time() - time.time())

哪种代码更好?或者这真的很重要吗?

在第二个示例中,没有理由重新导入时间,这实际上就是您正在做的事情。为了美观起见,您应该只导入(直接)使用它的同一模块中的模块

想象一下,导入3个级别(一个模块导入另一个模块,该模块导入另一个模块…),并在第一个顶级模块中跟踪所有这些导入!这将是一场噩梦

就速度而言,我相信重新导入对性能的影响可以忽略不计。Python解释器在多次导入时不会执行完全重新导入。

来自:

选中的第一个位置是sys.modules,它是所有 以前已导入。如果在那里找到了模块,那么它就是 在导入的步骤(2)中使用

通过导入加载的模块本质上是单例的。在第一次导入模块时,将执行模块全局范围中的代码(初始化模块),并将模块实例添加到sys.modules。任何其他模块中的下一次导入将只引用此初始化实例。费用可以忽略不计

简单的例子:

a.py

print "HELLO"
import a
import c
import a
b.py

print "HELLO"
import a
import c
import a
c.py

print "HELLO"
import a
import c
import a
在交互式口译员中:

Python 2.6.6 (r266:84297, Aug 24 2010, 18:13:38) [MSC v.1500 64 bit (AMD64)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import b
HELLO
>>>
(注意“HELLO”只打印一次)

你是说打印(mytime.get_time()-time.time())对吗?可能是重复的