在不同的模块中分隔 类 会对性能产生影响吗?
does separating classes in diffrent modules have performance consequences?
将所有 类 放在一个模块中是否更好(假设它们以某种方式相关)
在性能方面?
因为 python 需要搜索模块并且可能将包导入每个模块需要时间?
即:
├──animals
└── animals.py
animals.py:
import stuff
class dog: ...
class cat: ...
class fish: ...
或
src
├── animals
│ ├── __init__.py
│ ├── dog.py
| |── cat.py
| |── fish.py
└── do_stuff_with_animals.py
do_stuff_with_animals.py:
from src.animals import dog ,cat ,fish
无论您的模块在哪里定义,一旦您进行了导入,其中包含所有定义的“模块对象”都会缓存在 sys.modules
下(来自文档 here)
您将为每次导入“支付”一些费用(查找文件、解析文件并编译 python 代码、将代码加载到内存中,以及 运行 以供评估) , 但在一个长的 运行 程序中,这不应该是一个问题 - 一旦模块被加载,它就会被缓存并且模块导入时间通常可以忽略不计(假设模块只定义 类 而没有定义任何复杂的东西)。
将所有 类 放在一个模块中是否更好(假设它们以某种方式相关) 在性能方面? 因为 python 需要搜索模块并且可能将包导入每个模块需要时间?
即:
├──animals
└── animals.py
animals.py:
import stuff
class dog: ...
class cat: ...
class fish: ...
或
src
├── animals
│ ├── __init__.py
│ ├── dog.py
| |── cat.py
| |── fish.py
└── do_stuff_with_animals.py
do_stuff_with_animals.py:
from src.animals import dog ,cat ,fish
无论您的模块在哪里定义,一旦您进行了导入,其中包含所有定义的“模块对象”都会缓存在 sys.modules
下(来自文档 here)
您将为每次导入“支付”一些费用(查找文件、解析文件并编译 python 代码、将代码加载到内存中,以及 运行 以供评估) , 但在一个长的 运行 程序中,这不应该是一个问题 - 一旦模块被加载,它就会被缓存并且模块导入时间通常可以忽略不计(假设模块只定义 类 而没有定义任何复杂的东西)。