vik*_*sit 3 python django import performance python-module
我想知道 - 人们如何处理在django视图中导入大量常用模块?最有效的方法是什么?
比如,我有一些观点,比如
admin_views.py
search_views.py
.
.
Run Code Online (Sandbox Code Playgroud)
从我所看到的,他们每个人都需要使用HttpResponse或其他常用的模块.此外,他们中的一些人需要像BeautifulSoup这样的东西,而其他人则需要其他东西(md5,auth等).
我在启动项目时所做的是创建一个include_all.py包含大部分常见导入的内容,然后在视图中添加这些特定内容.所以,我有类似的东西,
admin_views.py
from include_all import *
...
[list of specific module imports for admin]
...
Run Code Online (Sandbox Code Playgroud)
search_views.py
from include_all import *
...
[list of specific module imports for search]
...
Run Code Online (Sandbox Code Playgroud)
随着时间的推移,include_all成为一个misc文件,其中包含任何需要的东西 - 因此,许多视图最终导入了他们不需要的模块.
这会影响效率吗?也就是说,python(django?)是否导入所有模块一次并存储/缓存它们,以便需要它们的任何其他视图不必再次导入它?或者我调用这个长文件的方法效率很低 - 我最好坚持在每个视图中单独导入这些模块?
对于这类事情有没有最佳做法?
谢谢!
Python本身保证模块只加载一次(除非reload明确调用,这不是这里的情况):在第一次之后,import该模块直接绑定其名称sys.modules[themodulename],这是一个非常快速的操作.所以Django不需要做任何进一步的优化,你也不需要.
最佳做法是避免from ... import *生产代码(使每个名称来自更清晰,更易于维护,便于测试等)和导入模块,"单独",如你所说,准确地在他们需要的地方(通过可能绑定更少的名称可以节省几微秒,绝对不会浪费任何,但"明确比隐含更好" - 清晰度,可读性,可维护性 - 无论如何都是主要的考虑因素.
| 归档时间: |
|
| 查看次数: |
3517 次 |
| 最近记录: |