加速随机数据的创建

时间:2014-07-17 20:46:38

标签: python random

我写了这个非常简单的脚本来为机器学习创建一些随机数据。

from random import randint

f = open('2014-07-17-1M_testdata_1Mx500.cvs', 'w', 50000000) #50MB write buffer
for i in range(1000000): #num rows
    for i2 in range(500): #entries per row
        f.write(str(randint(0,1000000))) #Return a random integer N such that a <= N <= b.
        if(i2 != 499): #entries per row - 1
            f.write(",")
    f.write("\n")
    if(i != 0 and i % 100000 == 0):
        print(str(i) + " lines written")
f.close

但是,我注意到一个CPU内核使用100%负载,并且数据创建所需的时间比磁盘速度允许的时间长得多。 要创建大型数据集(100多GB),有没有一种简单的方法可以加快速度?或许一些更快的随机库?

1 个答案:

答案 0 :(得分:3)

纯Python是一个艰难的,但幸运的是有高效的Python库可以帮助加快速度。 numpy是一个很好的人:

import numpy
import numpy.random

f = open('2014-07-17-1M_testdata_1Mx500.csv', 'w', 50000000)

for i in range(1000):
    m = numpy.random.random_integers(0, 1000000, (1000, 500))
    numpy.savetxt(f, m, delimiter=',')

f.close()

在我的MacBook Pro上运行,代码肯定是通过写入磁盘而不是CPU来绑定的, 所以这似乎可以解决问题。