我想要一个Giga字节数据字符串。
使用此代码
length = 0x20000000
payload = ''.join(random.choice(string.printable) for _ in range(length))
但python除外并打印此错误“MemoryError”
完整的错误消息:
payload = ''.join(random.choice(string.printable) for _ in range(length))
MemoryError
我在堆栈溢出中发现了这个例外情况。
使用“import sys,sys.setrecursionlimit(10 ** 6)”将修复它!
所以,我添加了这段代码。
但没有解决!!
我无法“导入资源”。因为,不能不安装..
答案 0 :(得分:1)
我认为最好的选择是使用barray = bytearray()
length = 0x20000000
for _ in range(length):
barray.append(random.choice(string.printable))
:
list
这只耗费了我机器上的0.5演出。
注意,增加递归限制对你没有帮助,实际上根本就没有使用递归。你只是制作非常大的东西。只有由''.join
创建的{{1>}基础基础的指针数组将需要大约0x20000000 * 8 * 1e-9 == 4.294967296
千兆字节,并且不计算中的字符串list
本身,每个都需要一个完整的python对象,每个对象另外40个左右的字节,所以你看,你刚刚耗尽了内存。因此,请考虑您的个别字符串对象:
>>> 0x20000000 * (48) * 1e-9
25.769803776000003
所以你需要超过20场演出!可以在一些现代笔记本电脑上使用,但8次演出肯定是不够的。