【发布时间】:2012-08-20 19:34:24
【问题描述】:
我正在运行一个基于 Flask 的 Web 应用程序,该应用程序使用 Mongodb(与 Pymongo 一起用于 Python)。几乎每个视图都访问数据库,因此我想最有效地利用内存和 CPU 资源。我不确定实例化 pymongo 的 Connection() 对象最有效的方法是什么,该对象用于访问和操作数据库。现在,我在文件顶部声明from pymongo import Connection,然后在我拥有的每个视图函数的开头:
def sampleViewFunction():
myCollection = Connection()['myDB']['myCollection']
## then use myCollection to manipulation the database
## more code...
另一种方法是在文件顶部声明:
from pymongo import Connection
myCollection = Connection()['myD']['myCollection']
然后稍后,您的代码将显示为:
def sampleViewFunction():
## no declaration of myCollection since it's a global variable
## then use myCollection to manipulation the database
## more code...
所以唯一的区别是myCollection的声明范围。这两种方法在处理内存的方式和 CPU 消耗方面有何不同?由于这是一个 Web 应用程序,我正在考虑多个用户同时是站点的场景。我想数据库连接的寿命会有所不同,我猜这可能会影响性能。
【问题讨论】:
-
实际上,对于那些对数据库相当陌生的人来说,这根本不明显。我不了解数据库连接的复杂性以及建立一个连接需要什么。由于 Python 是一种非常高级的语言,我认为询问它如何处理像这样的细微差异是完全合理的。严重地?你对我投了反对票?
-
J-bob - 你的问题是合理的,别担心,有些人有....问题,最终会被标记/否决到遗忘 - 如果我知道更多 python 我会自己回答,但我可以告诉你,通常连接池代码应该为你处理大部分内容,与内存相比,CPU 开销可以忽略不计(通常) - MongoDB 连接的默认堆栈大小为 1MB,因此这通常是主要资源消耗。
标签: python mongodb flask pymongo