【发布时间】:2014-05-27 05:30:20
【问题描述】:
我有一个 Python 脚本来压缩大字符串:
import zlib
def processFiles():
...
s = """Large string more than 2Gb"""
data = zlib.compress(s)
...
当我运行这个脚本时,我得到了一个错误:
ERROR: Traceback (most recent call last):#012 File "./../commands/sce.py", line 438, in processFiles#012 data = zlib.compress(s)#012OverflowError: size does not fit in an int
一些信息:
zlib.版本 = '1.0'
zlib.ZLIB_VERSION = '1.2.7'
# python -V
Python 2.7.3
# uname -a
Linux app2 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64 GNU/Linux
# free
total used free shared buffers cached
Mem: 65997404 8096588 57900816 0 184260 7212252
-/+ buffers/cache: 700076 65297328
Swap: 35562236 0 35562236
# ldconfig -p | grep python
libpython2.7.so.1.0 (libc6,x86-64) => /usr/lib/libpython2.7.so.1.0
libpython2.7.so (libc6,x86-64) => /usr/lib/libpython2.7.so
如何在 Python 中压缩大数据(超过 2Gb)?
【问题讨论】:
-
您使用的是 64 位版本的 Python 吗?你有多少内存? Python 需要将整个字符串以及正在构造的压缩对象保存在 RAM 中。
-
我有 64Gb RAM,现在 56Gb 是免费的。系统是 Debian 64 位。如何发现 Python 是 64 位的?
-
你的 Python 版本也是 64 位的?
-
我在主题中更新有关系统和 RAM 的信息。