我有一个字典,我正在写一个文件,然后再次加载它。字典有一些集合,因此我可以选择使用自定义ModelEncoder执行eval()
或json.dumps()
。
我尝试了两者,json
的内存占用量比eval
小得多。为什么eval
占用了更多的内存?
答案 0 :(得分:2)
您是否应该使用eval
是另一个问题。
eval
占用更多内存的主要原因是文本首先被编译成python表达式(解析,转换为字节代码),然后进行评估。
特别是对于大文字,python有一个memory leak in the bytecode compiler。这个问题讨论了pyc编译,但你也可以在eval中使用代码编译。
json不会受此影响,因为它没有将您的文本转换为可执行的字节码。