我有一段代码,它处理目录中的数千个文件,对于每个文件,它生成一个对象(字典),其部分键值如下:
{
........
'result': [...a very long list...]
}
如果我处理所有文件,将结果保存在列表中,然后使用 jsonlines 库写入所有文件,我的笔记本电脑(mac)将耗尽内存。
所以我的解决方案是一一处理,得到结果,然后插入到jsonline文件中,删除对象,释放内存。
查看官方文档后: https ://jsonlines.readthedocs.io/en/latest/
我找不到可以在不覆盖 jsonline 文件的情况下编写的方法。
所以我怎么能处理这么大的输出。
此外,我正在使用并行线程来处理结果:
from multiprocessing.dummy import Pool
Pool(4).map(get_result, file_lst)
我确实希望打开 json_file,写入每个结果,然后释放内存。