我正在尝试申请_pickle将数据保存到磁盘上.但是在打电话时_pickle.dump,我收到了一个错误
OverflowError: cannot serialize a bytes object larger than 4 GiB
Run Code Online (Sandbox Code Playgroud)
这是一个难以使用的限制_pickle吗?(cPickle对于python2)
Eri*_*eil 67
在Python 3.4中不再有PEP 3154和Pickle 4.0
https://www.python.org/dev/peps/pep-3154/
但是你需要说你想使用协议的第4版:https:
//docs.python.org/3/library/pickle.html
pickle.dump(d, open("file", 'w'), protocol=4)
Run Code Online (Sandbox Code Playgroud)
是的,这是一个硬编码限制;从save_bytes功能:
else if (size <= 0xffffffffL) {
// ...
}
else {
PyErr_SetString(PyExc_OverflowError,
"cannot serialize a bytes object larger than 4 GiB");
return -1; /* string too large */
}
Run Code Online (Sandbox Code Playgroud)
该协议使用 4 个字节将对象的大小写入磁盘,这意味着您最多只能跟踪 2 32 == 4GB 的大小。
如果您可以将bytes对象分解为多个对象,每个对象都小于 4GB,当然您仍然可以将数据保存到泡菜中。
| 归档时间: |
|
| 查看次数: |
19574 次 |
| 最近记录: |