gpt4 book ai didi

python - Python中有比 "marshal"或 "cPickle"更底层的对象操作函数吗?

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:48 25 4
gpt4 key购买 nike

例如,根据 Python 源代码,Marshal 仍在解析输入数据。

.....
case TYPE_FALSE:
Py_INCREF(Py_False);
retval = Py_False;
break;

case TYPE_TRUE:
Py_INCREF(Py_True);
retval = Py_True;
break;

case TYPE_INT:
retval = PyInt_FromLong(r_long(p));
break;

case TYPE_INT64:
retval = r_long64(p);
break;

case TYPE_LONG:
retval = r_PyLong(p);
break;

case TYPE_FLOAT:
.......

Python中有没有比“marshal”或“c​​Pickle”更底层的对象操作函数?

例如,我已经将转储的数据加载到内存中,我只想像在 C/C++ 中那样进行类型转换,(PyObject *) data_loaded_in_memory;

编辑:如果这不能直接在 python 中完成,任何有关 C 函数编写该能力的提示都会很棒。

最佳答案

不要认为你可以只获取 python 对象的内存镜像,存储它,稍后将它加载回不同的解释器甚至同一个解释器并期望它有意义。它不会。整数和 float 可能完全包含在对象结构中,但字符串已经有一个单独分配的数据缓冲区,甚至长整数也有。

换句话说,cPickle 是可能的最低层(cPicklemarshal 低,因为后者保持版本和版本之间的兼容性平台,cPickle 没有)允许存储对象并将它们加载到另一个解释器或同一个解释器(如果它们在两者之间从内存中释放)。

关于python - Python中有比 "marshal"或 "cPickle"更底层的对象操作函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6952109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com