eval vs json.loads内存消耗

时间:2017-01-30 23:32:13

标签: python

我有一个字典,我正在写一个文件,然后再次加载它。字典有一些集合,因此我可以选择使用自定义ModelEncoder执行eval()json.dumps()

我尝试了两者,json的内存占用量比eval小得多。为什么eval占用了更多的内存?

1 个答案:

答案 0 :(得分:2)

您是否应该使用eval是另一个问题。

eval占用更多内存的主要原因是文本首先被编译成python表达式(解析,转换为字节代码),然后进行评估。

特别是对于大文字,python有一个memory leak in the bytecode compiler。这个问题讨论了pyc编译,但你也可以在eval中使用代码编译。

json不会受此影响,因为它没有将您的文本转换为可执行的字节码。