相关疑难解决方法(0)

我怎样才能在Python中明确释放内存?

我写了一个Python程序,它作用于一个大的输入文件,创建了几百万个表示三角形的对象.算法是:

  1. 读取输入文件
  2. 处理文件并创建由顶点表示的三角形列表
  3. 以OFF格式输出顶点:顶点列表,后跟三角形列表.三角形由顶点列表中的索引表示

在打印三角形之前打印出完整的顶点列表的OFF的要求意味着在将输出写入文件之前我必须在内存中保存三角形列表.与此同时,由于列表的大小,我遇到了内存错误.

告诉Python我不再需要某些数据的最佳方法是什么,它可以被释放?

python memory memory-management

338
推荐指数
9
解决办法
42万
查看次数

Python内存没有在linux上发布?

我正在尝试将大型json对象加载到内存中,然后对数据执行一些操作.但是,我注意到在读取json文件后RAM大幅增加 - 即使对象超出范围.

这是代码

import json
import objgraph
import gc
from memory_profiler import profile
@profile
def open_stuff():
    with open("bigjson.json", 'r') as jsonfile:
        d= jsonfile.read()
        jsonobj = json.loads(d)
        objgraph.show_most_common_types()
        del jsonobj
        del d
    print ('d')
    gc.collect()

open_stuff()
Run Code Online (Sandbox Code Playgroud)

我尝试在Windows中使用Python版本2.7.12和Debian 9在Python版本2.7.13中运行此脚本,我发现Linux中的Python存在问题.

在Windows中,当我运行脚本时,它会在读取json对象时占用大量RAM,并且在范围内(如预期的那样),但是在操作完成后(如预期的那样)释放它.

list                       3039184
dict                       413840
function                   2200
wrapper_descriptor         1199
builtin_function_or_method 819
method_descriptor          651
tuple                      617
weakref                    554
getset_descriptor          362
member_descriptor          250
d
Filename: testjson.py

Line #    Mem usage    Increment   Line Contents
================================================
     5     16.9 MiB     16.9 MiB   @profile
     6                             def open_stuff():
     7 …
Run Code Online (Sandbox Code Playgroud)

python linux memory-leaks

10
推荐指数
2
解决办法
995
查看次数

标签 统计

python ×2

linux ×1

memory ×1

memory-leaks ×1

memory-management ×1