def create_file_numbers_old(filename, size):
start = time.clock()
value = 0
with open(filename, "w") as f:
while f.tell()< size:
f.write((str(value))+'\n')
value += 1
end = time.clock()
print "time taken to write a file of size", size, " is ", (end -start), "seconds \n"
这是我需要优化的功能!有人可以帮我在3-4秒左右运行它吗?
def main(argv = sys.argv):
#add argument checking and parsing here ..
fpath = output_path(r"est.txt")
size=50*1024*1024 #write a 50M file
cProfile.run("create_file_numbers_old('%s', %d)" %(fpath, size))
fpath1 = output_path(r"est1.txt")
cProfile.run("create_file_numbers_new('%s', %d)" %(fpath1, size))
if __name__ == "__main__":
main()
答案 0 :(得分:2)
对.tell()
的调用对我来说显着减慢了速度。如果你跟踪在python-space中写了多少,你可以将时间减少10倍。
def create_file_numbers_old(filename, size):
start = time.clock()
value = 0
written = 0 # number of bytes written so far
with open(filename, "w") as f:
while written < size:
s = str(value) + '\n'
written += len(s) # add how many bytes are in this write()
f.write(s)
value += 1
end = time.clock()
print "time taken to write a file of size", size, " is ", (end -start), "seconds \n"