Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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脚本的其余部分,txn.get(“somekey”)是否占用RAM?如果是,如何释放它使用的RAM?_Python_Database_Ram_Lmdb - Fatal编程技术网

对于python脚本的其余部分,txn.get(“somekey”)是否占用RAM?如果是,如何释放它使用的RAM?

对于python脚本的其余部分,txn.get(“somekey”)是否占用RAM?如果是,如何释放它使用的RAM?,python,database,ram,lmdb,Python,Database,Ram,Lmdb,我有一个脚本,试图将数据附加到现有的键/值对。问题是,每当我使用txn.get()获取现有数据时,它都会使用RAM,之后不会释放。当RAM接近极限时,计算机的速度会非常慢,交换空间被越来越多地使用。目前,我还没有达到交换空间的限制,但我担心,如果我的脚本达到该限制,它将停止运行。但是无论哪种方式,如果没有RAM的使用,我的脚本即使有一个小的RAM也能顺利运行 以下是导致我出现此问题的脚本片段: for p in xrange(strings_number): data=txn.get

我有一个脚本,试图将数据附加到现有的键/值对。问题是,每当我使用
txn.get()
获取现有数据时,它都会使用RAM,之后不会释放。当RAM接近极限时,计算机的速度会非常慢,交换空间被越来越多地使用。目前,我还没有达到交换空间的限制,但我担心,如果我的脚本达到该限制,它将停止运行。但是无论哪种方式,如果没有RAM的使用,我的脚本即使有一个小的RAM也能顺利运行

以下是导致我出现此问题的脚本片段:

for p in xrange(strings_number):  
    data=txn.get(struct.pack('i',900000+p))  #I want to reorganize this bytestring into columns
    for j in xrange(col_number):
        to_be_appended=""
        for l in xrange(j*4,len(data),size):
            to_be_appended+=data[l:l+4]
        temp=txn.get(struct.pack('i',j))  #whenever I call txn.get() memory usage gets bigger
        txn.put(struct.pack('i',j),temp+to_be_appended,dupdata=False,overwrite=True)         
        txn.delete(struct.pack('i',900000+p))

相关的,但不是重复的-。我认为这与此相关,因为您可以在每次循环迭代后调用
gc.collect()
,看看它是否有帮助。请注意,GC在进行GCs时将使用CPU时间。不过,我并不乐观这会对您的情况有所帮助。遗憾的是,gc.collect()并不能解决这个问题。在这种情况下,您需要更改代码以在内存中保留较少的相关数据,而不是重复数据。我认为这与此相关,因为您可以在每次循环迭代后调用
gc.collect()
,看看它是否有帮助。请注意,GC在进行GCs时将使用CPU时间。不过,我并不乐观这会对您的情况有所帮助。遗憾的是,gc.collect()并不能解决这个问题。在这种情况下,您需要更改代码以在内存中保留较少的数据