编程语言
首页 > 编程语言> > python – 在Django视图中高效导入模块

python – 在Django视图中高效导入模块

作者:互联网

我想知道 – 人们如何处理在django视图中导入大量常用模块?最有效的方法是什么?

比如,我有一些观点,比如

admin_views.py
search_views.py
.
.

从我所看到的,他们每个人都需要使用HttpResponse或其他常用的模块.此外,他们中的一些人需要像BeautifulSoup这样的东西,而其他人则需要其他东西(md5,auth等).

我在启动项目时所做的是创建一个包含大部分常见导入的include_all.py,然后在视图中添加这些特定内容.所以,我有类似的东西,

admin_views.py

from include_all import *
... 
[list of specific module imports for admin]
...

search_views.py

from include_all import *
... 
[list of specific module imports for search]
...

随着时间的推移,include_all成为一个misc文件,其中包含任何需要的东西 – 因此,许多视图最终导入了他们不需要的模块.

这会影响效率吗?也就是说,python(django?)是否导入所有模块一次并存储/缓存它们,以便需要它们的任何其他视图不必再次导入它?或者我调用这个长文件的方法效率很低 – 我最好坚持在每个视图中单独导入这些模块?

对于这类事情有没有最佳做法?

谢谢!

解决方法:

Python本身保证模块只加载一次(除非显式调用reload,这不是这里的情况):在第一次导入之后,导入该模块只是直接从sys.modules [themodulename]绑定它的名字,非常快操作.所以Django不需要做任何进一步的优化,你也不需要.

最佳做法是避免生产代码中的…… import *(使每个名称来自更清晰,更易于维护,便于测试等)和导入模块,“单独”放置它们,确切地说它们的位置需要(通过可能绑定更少的名称,可以节省几微秒,绝对不会浪费任何,但“明确比隐含更好” – 清晰度,可读性,可维护性 – 无论如何是主要考虑因素).

标签:python,performance,django,import,python-module
来源: https://codeday.me/bug/20190827/1743183.html