Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python eval vs json.loads内存消耗_Python - Fatal编程技术网

Python eval vs json.loads内存消耗

Python eval vs json.loads内存消耗,python,Python,我有一本字典,我正在写一个文件,然后再次加载它。字典有一些集合,因此我可以选择使用自定义ModelEncoder执行eval()或json.dumps() 我尝试了这两种方法,json的内存占用比eval小得多。为什么eval占用这么多内存?您是否应该使用eval实际上是另一个问题 eval占用更多内存的主要原因是首先将文本编译成python表达式(解析、转换为字节码),然后进行计算 尤其是对于较大的文本,python有一个。本期讨论pyc编译,但您还将在eval中使用代码编译 json不会因此

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


我尝试了这两种方法,
json
的内存占用比
eval
小得多。为什么
eval
占用这么多内存?

您是否应该使用
eval
实际上是另一个问题

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

尤其是对于较大的文本,python有一个。本期讨论pyc编译,但您还将在eval中使用代码编译


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

您是否应该使用
eval
实际上是另一个问题

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

尤其是对于较大的文本,python有一个。本期讨论pyc编译,但您还将在eval中使用代码编译


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

eval
是一种更为通用的操作。为什么它不如一个严格约束的优化那么好呢?(还有,考虑到这些限制因素排除了几类安全漏洞,你为什么还要考虑
eval
?)@CharlesDuffy我保存和读取的是我的数据,所以这是一种快速的方法。一般来说,相信你的数据是一种错误。一个设计良好的部署模型通常将代码设置为只读,但不能避免数据被读写;通过将数据作为代码进行评估,您将挫败您的ops团队为防止能够存储任意数据的攻击者执行任意代码所做的努力。这绝对不是eval的用途。考虑使用,或类似的库。此外,<代码> EVA/COD>在这个上下文中使用时是错误的。参见
eval
是一种更为通用的操作。为什么它不如一个严格约束的优化那么好呢?(还有,考虑到这些限制因素排除了几类安全漏洞,你为什么还要考虑
eval
?)@CharlesDuffy我保存和读取的是我的数据,所以这是一种快速的方法。一般来说,相信你的数据是一种错误。一个设计良好的部署模型通常将代码设置为只读,但不能避免数据被读写;通过将数据作为代码进行评估,您将挫败您的ops团队为防止能够存储任意数据的攻击者执行任意代码所做的努力。这绝对不是eval的用途。考虑使用,或类似的库。此外,<代码> EVA/COD>在这个上下文中使用时是错误的。看见