相关疑难解决方法(0)

可重用的库,以获得文件大小的人类可读版本?

Web上有各种片段,可以为您提供从字节大小返回人类可读大小的功能:

>>> human_readable(2048)
'2 kilobytes'
>>>
Run Code Online (Sandbox Code Playgroud)

但是有没有提供这个的Python库?

python filesize code-snippets

210
推荐指数
13
解决办法
9万
查看次数

python-如何显示所有变量的大小

我想同时打印我的范围内所有变量的内存大小.

类似的东西:

for obj in locals().values():
    print sys.getsizeof(obj)
Run Code Online (Sandbox Code Playgroud)

但是在每个值之前使用变量名称,因此我可以看到我需要删除哪些变量或分成批次.

想法?

python memory

27
推荐指数
2
解决办法
1万
查看次数

如何销毁Python对象并释放内存

我试图迭代超过100,000个图像并捕获一些图像功能,并将所得的dataFrame作为pickle文件存储在磁盘上。

不幸的是,由于RAM的限制,我被迫将图像分成20,000个大块并对其进行操作,然后再将结果保存到磁盘上。

在开始循环以处理下一个20,000图像之前,下面编写的代码应该保存20,000图像的结果数据框。

但是-这似乎没有解决我的问题,因为在第一个for循环结束时内存没有从RAM中释放

因此,在处理第50,000条记录时,该程序由于内存不足错误而崩溃。

在将对象保存到磁盘并调用垃圾收集器后,我尝试删除这些对象,但是RAM使用率似乎并未下降。

我想念什么?

#file_list_1 contains 100,000 images
file_list_chunks = list(divide_chunks(file_list_1,20000))
for count,f in enumerate(file_list_chunks):
    # make the Pool of workers
    pool = ThreadPool(64) 
    results = pool.map(get_image_features,f)
    # close the pool and wait for the work to finish 
    list_a, list_b = zip(*results)
    df = pd.DataFrame({'filename':list_a,'image_features':list_b})
    df.to_pickle("PATH_TO_FILE"+str(count)+".pickle")
    del list_a
    del list_b
    del df
    gc.collect()
    pool.close() 
    pool.join()
    print("pool closed")
Run Code Online (Sandbox Code Playgroud)

python memory-management out-of-memory pandas

13
推荐指数
1
解决办法
1446
查看次数

为什么泡菜吃内存?

我试图处理通过小块将大量的腌制数据写入磁盘.这是示例代码:

from cPickle import *
from gc import collect

PATH = r'd:\test.dat'
@profile
def func(item):
    for e in item:
        f = open(PATH, 'a', 0)
        f.write(dumps(e))
        f.flush()
        f.close()
        del f
        collect()

if __name__ == '__main__':
    k = [x for x in xrange(9999)]
    func(k)
Run Code Online (Sandbox Code Playgroud)

内置循环中的open()和close()可以排除内存中数据累积的可能原因.

为了说明问题,我附上了使用Python 3d party模块memory_profiler获得的内存分析结果:

   Line #    Mem usage  Increment   Line Contents
==============================================
    14                           @profile
    15      9.02 MB    0.00 MB   def func(item):
    16      9.02 MB    0.00 MB       path= r'd:\test.dat'
    17
    18     10.88 MB    1.86 MB       for e …
Run Code Online (Sandbox Code Playgroud)

python performance file-io pickle persistent

12
推荐指数
1
解决办法
4799
查看次数