在models.py
我有:
...
db = SQLAlchemy(app)
class User(db.Document):
...
在我的应用中serve.py
和models.py
致电:
from models import User
这种双重导入会实例化数据库两次并可能导致问题吗?
答案 0 :(得分:11)
这种双重导入会实例化数据库两次并可能导致问题吗?
不,不会。导入模块后,无论通过import
语句进行任何进一步导入,它都可用。
导入后,模块存储在sys.modules
。
如果您想重新加载模块,则必须使用reload(module)
。
示例: bar.py
xs = [1, 2, 3]
导入两次:
>>> from bar import xs
>>> id(xs)
140211778767256
>>> import bar
>>> id(bar.xs)
140211778767256
请注意标识是完全相同的吗?
<强>缓存:强>
>>> import sys
>>> sys.modules["bar"] is bar
True
答案 1 :(得分:3)
不,它不会。导入在Python中缓存,因此再次导入同一模块不会导致它再次执行。
您可以轻松确认顺便说一句。如果您只是将打印件放入要导入的模块中。如果多次看到输出,则会多次执行该模块。但这根本不会发生。