, numpy.savetxt , :
import sys
import numpy as np
fmt = '%7.0f %11.5e %11.5e %7.5f'
records = 10000
np.random.seed(1234)
aray = np.random.rand(records, 4)
def writ(f, aray=aray, fmt=fmt):
fw = f.write
for row in aray:
fw(fmt % tuple(row))
def prin(f, aray=aray, fmt=fmt):
for row in aray:
print>>f, fmt % tuple(row)
def stxt(f, aray=aray, fmt=fmt):
np.savetxt(f, aray, fmt)
nul = open('/dev/null', 'w')
def tonul(func, nul=nul):
func(nul)
def main():
print 'looping:'
loop(sys.stdout, aray)
print 'savetxt:'
savetxt(sys.stdout, aray)
( 2,4 Core Duo Macbook Pro Mac OS X 10.5.8, Python 2.5.4 DMG python.org, numpy 1.4 rc1, ), , , , :
$ py25 -mtimeit -s'import ft' 'ft.tonul(ft.writ)'
10 loops, best of 3: 101 msec per loop
$ py25 -mtimeit -s'import ft' 'ft.tonul(ft.prin)'
10 loops, best of 3: 98.3 msec per loop
$ py25 -mtimeit -s'import ft' 'ft.tonul(ft.stxt)'
10 loops, best of 3: 104 msec per loop
savetxt, , , , write... print ( ), , , write ( , - ). , 2,5% , , , , . (BTW, /dev/null, 6 7 , ).