我正在开发django中的应用程序,我怀疑在全局级别导入库对内存或性能的影响是否比在本地(每个功能)级别导入。如果按功能或视图导入,单独需要的模块是否导入节省空间?或者这样做是否有任何负面影响?
答案 0 :(得分:14)
您肯定必须注意到,几乎所有Python代码都会在文件顶部执行导入操作。这是有原因的:导入的开销是最小的,并且可能是你在进程生命周期中的某个时刻导入代码,所以你也可以把它排除在外。
在功能级别导入的唯一好理由是避免循环依赖。
编辑您的评论表明您还不了解网络应用通常如何运作,至少在Python中是这样。它们不会为每个请求启动新进程并从头开始导入代码。相反,服务器根据需要实例化进程,并且每个进程都会处理许多请求,直到它最终被终止。因此,在这一生中,很可能会最终需要所有进口。
答案 1 :(得分:0)
当脚本运行时,它会将模块存储在内存中,我相信你明白这一点。
如果您要在本地范围内导入,则每次客户端调用该函数时都会导入该模块。但是如果模块是在全球范围内导入的,那就没有必要了!
因此,在这种情况下:全局导入获胜。
答案 2 :(得分:0)
将它们置于函数内以限制其可见性和/或缩短初始启动时间通常很有用。尽管Python的解释器经过优化,不能多次导入同一个模块,但在某些情况下,重复执行import语句会严重影响性能。