【发布时间】:2013-04-27 12:10:42
【问题描述】:
我需要在一个文件中填写大量由数字标识的记录(测试数据)。记录的数量很大,并且id应该是唯一的,记录的顺序应该是随机的(或伪随机的)。
我试过这个:
# coding: utf-8
import random
COUNT = 100000000
random.seed(0)
file_1 = open('file1', 'w')
for i in random.sample(xrange(COUNT), COUNT):
file_1.write('ID{0},A{0}\n'.format(i))
file_1.close()
但它正在吞噬我所有的记忆。
有没有办法生成一个大的连续(不一定,但它会很好,否则是唯一的)整数的洗牌序列?使用生成器而不将所有序列保存在 RAM 中?
【问题讨论】:
-
@Blender,该方法不需要将所有元素存储在内存中吗?
-
@Dogbert:滚动浏览投票最多的答案。有一些可以解决内存问题。
-
你真的有1亿个数字,还是这个问题更笼统?
-
是的,我需要生成一个几千兆字节的测试记录文件
-
数字应该有多大? 100mio 连续,或者更大的数字,比如完整的 32 位甚至 64/128 位好吗?