您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

现在,可能是第50,000位的数据非常大,这导致了OOM,因此要对此进行测试,我将首先尝试:

file_list_chunks = list(divide_chunks(file_list_1,20000))[30000:]

如果它在10,000处失败,这将确认20k的块大小是否太大,或者如果再次在50,000处失败,则代码存在问题…

好的,进入代码

首先,您不需要显式list构造函数,在python中进行迭代比将整个列表生成到内存中要好得多。

file_list_chunks = list(divide_chunks(file_list_1,20000))
# becomes
file_list_chunks = divide_chunks(file_list_1,20000)

我认为您可能在这里滥用ThreadPool:

阻止将更多任务提交给池。所有任务完成后,工作进程将退出

这听起来像close有些想法仍在运行,尽管我认为这是安全的,但感觉有点不符合Python风格,最好将上下文管理器用于ThreadPool:

with ThreadPool(64) as pool: 
    results = pool.map(get_image_features,f)
    # etc.

实际上,不能保证delpython的显式s释放内存

您应该 加入之后/之后使用:

with ThreadPool(..):
    ...
    pool.join()
gc.collect()

您也可以尝试将其切成小块,例如10,000甚至更小!

python 2022/1/1 18:32:28 有626人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶