首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在view.py文件顶部编写import与在每个函数中编写import有什么不同?

在view.py文件顶部编写import与在每个函数中编写import有什么不同?
EN

Stack Overflow用户
提问于 2019-11-07 14:05:58
回答 1查看 54关注 0票数 0

Module_a中的代码:

代码语言:javascript
复制
varA=10

class ClassX:
    def fn1():
        return varA

Flask_api中的代码:

代码语言:javascript
复制
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    import module_a    # or from module_a import varA
    module_a.varA += 1     # or varA+=1
    return module_a.varA

当在开发服务器上运行时,可能有一个进程和一个线程处理所有请求。但是,在生产环境中,由于每个flask端点调用都可以在新进程或新线程中启动,因此,我很想知道是否有什么需要注意的地方?

例如:它不是进程安全和线程安全的。

此外,在函数中进行导入与在外部进行导入也有区别。

EN

回答 1

Stack Overflow用户

发布于 2019-11-07 17:12:49

在函数内部而不是在顶层进行导入的原因通常是:

  • 以延迟初始导入,例如,因为您很少需要它(因此希望避免在初始启动时导入它)。虽然不是很常见,但是如果你导入了一些你不需要的昂贵的错误处理模块(因为你不需要错误),这可能是有意义的。
  • 来避免循环依赖问题。如果模块A导入模块B,模块B导入模块A,您可能最终无法导入这两个模块中的任何一个,因为它们相互依赖。将导入移动到函数中可以避免这种情况。

就一般性能和线程而言,这并不重要:只要您第一次(从任何地方)导入一个模块,它就会被添加到sys.modules中。因此,任何进一步的导入都只会从那里返回条目,而不是再次执行实际的导入。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58742849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档