Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在BerkeleyDB中多次打开数据库时性能损失_Python_Database_Performance_Berkeley Db - Fatal编程技术网

Python 在BerkeleyDB中多次打开数据库时性能损失

Python 在BerkeleyDB中多次打开数据库时性能损失,python,database,performance,berkeley-db,Python,Database,Performance,Berkeley Db,我正在使用BerkeleyDB开发一个小应用程序。我有一个关于在BDB中多次打开数据库的问题 我有一大组文本(语料库),我想加载其中的一部分来进行计算。这里有两个伪代码(与python混合) @一, @二, 在第二个示例中,我将在计算之前打开数据库,为每个循环加载令牌,然后关闭数据库 在第一个示例中,每次循环请求令牌时,我将打开、获取并关闭数据库 有没有演出损失 我还注意到,我正在使用DBEnv来管理数据库如果不缓存打开的文件,您将始终丢失性能,因为: 多次调用open()和close(),这

我正在使用BerkeleyDB开发一个小应用程序。我有一个关于在BDB中多次打开数据库的问题

我有一大组文本(语料库),我想加载其中的一部分来进行计算。这里有两个伪代码(与python混合)

@一,

@二,

在第二个示例中,我将在计算之前打开数据库,为每个循环加载令牌,然后关闭数据库

在第一个示例中,每次循环请求令牌时,我将打开、获取并关闭数据库

有没有演出损失


我还注意到,我正在使用DBEnv来管理数据库

如果不缓存打开的文件,您将始终丢失性能,因为:

  • 多次调用open()和close(),这非常昂贵
  • 您将丢失所有潜在的缓冲区(系统缓冲区和bdb内部缓冲区)

但是,在编写代码之前,我不会太在意性能。

如果不缓存打开的文件,您将始终丢失性能,因为:

  • 多次调用open()和close(),这非常昂贵
  • 您将丢失所有潜在的缓冲区(系统缓冲区和bdb内部缓冲区)
但是在编写代码之前,我不会太在意性能

def getCorpus(token):
    DB.open()
    DB.get(token)
    DB.close()
#open and wait
def openCorpus():
    DB.open()

#close database
def closeCorpus():
    DB.close()

def getCorpus(token):
    DB.get(token)