在用python进行数据处理编程中,往往涉及到文件IO口读写,IO口的读写性能会极大的影响程序的运行时间。在进行文件写入时,一般会存在两种情况。第一种是数据到来马上进行数据写入,即来一条写一条,第二种是数据到来时先存储到内存中,等到数据量存储到一定程度时,再一次性写入文件中。那么,这两种情况孰优孰劣?下面用一个例子展示给大家。
先看第二种情况,程序演示的是:第一次读取1万条数据,存储在列表中,再一次性存储到文件中。每存一万条数据的时间是3.1秒。
#-*- coding: utf-8 -*- #先读取1万条数据再保存 import os import time filename="E:/datacastle/test_file/new.txt" t=time.time() data=[] count =0 while True: with open("E:/datacastle/test_file/train_data/20140803_train.txt",'r') as f: with open(filename,'a') as F: line = f.readline() data.append(line) count +=1 if count==10000: print(time.time()-t) F.writelines(data) count=0 data=[] t=time.time() raw_input("over")
每存储1万条数据的运行时间如下:
C:\Users\Administrator>python E:\datacastle\test_file\read_big_file.py
>>3.18099999428
>>3.13100004196
>>3.12999987602
>>3.14100003242
再看第二种情况,每读一条数据就存储一条数据,每存储一万条运行的时间约为5秒
#-*- coding: utf-8 -*- #读一条存一条 import os import time filename="E:/datacastle/test_file/new.txt" t=time.time() data=[] count =0 while True: with open("E:/datacastle/test_file/train_data/20140803_train.txt",'r') as f: with open(filename,'a') as F: line = f.readline() F.writelines(line) count +=1 if count==10000: print(time.time()-t) count=0 t=time.time()
每存储1万条数据的运行时间如下:
C:\Users\Administrator>python E:\datacastle\test_file\read_big_file.py
>>4.4889998436
>>4.70700001717
>>4.90199995041
>>4.48600006104
>>5.55800008774
>>5.29799985886