我的python脚本按顺序解析文件,并进行简单的数据清理,并将其写入新的csv文件。我在用csv。这个剧本花了很长时间才能运行。
cProfile输出如下:

在这里发布这个问题之前,我已经做了很多谷歌搜索。
链接到图像图像链接
在这里添加代码,调用的函数
def db_insert(coCode, bse):
start = time()
q = []
print os.path.join(FILE_PATH, str(bse)+"_clean.csv");
f1 = open(os.path.join(FILE_PATH, str(bse)+"_clean.csv"))
reader = csv.reader(f1)
reader.next()
end = time()
# print end-start
for idx,row in enumerate(reader):
ohlc = {}
date = datetime.strptime( row[0], '%Y-%m-%d')
date = row[0]
row = row[1:6]
(op, high, low, close, volume) = row
ohlc[date] = {}
ohlc[date]['open'] = op
ohlc[date]['high'] = high
ohlc[date]['low'] = low
ohlc[date]['close'] = close
ohlc[date]['volume'] = volume
q.append(ohlc)
end1 = time()
# print end1-end
db.quotes.insert({'bse':str(bse), 'quotes':q})
# print time()-end1
f1.close()
q = []
print os.path.join(FILE_PATH, str(coCode)+".csv");
f2 = open(os.path.join(FILE_PATH, str(bse)+"_clean.csv"))
reader = csv.reader(f2)
reader.next()
for idx,row in enumerate(reader):
ohlc = {}
date = datetime.strptime( row[0], '%Y-%m-%d')
date = row[0]
try:
extra = row[7]+row[8]+row[9]
except:
try:
extra = row[7]
except:
extra = ''
row = row[1:6]
(op, high, low, close, volume) = row
ohlc[date] = {}
ohlc[date]['open'] = op
ohlc[date]['high'] = high
ohlc[date]['low'] = low
ohlc[date]['close'] = close
ohlc[date]['volume'] = volume
ohlc[date]['extra'] = extra
q.append(ohlc)
db.quotes_unadjusted.insert({'bse':str(bse), 'quotes':q})
f2.close()发布于 2014-12-02 22:27:34
我在一个约翰·马钦的答复中找到了这个解释。
只有在将数字与其他计数(如文件中的字符/字段/行数)进行比较时,ncalls才有意义;时间和累积时间才是真正重要的。累积时间是指在函数/方法中花费的时间,包括它调用的函数/方法所花费的时间;总体时间是用于函数/方法的时间,不包括它调用的函数/方法所花费的时间。
https://stackoverflow.com/questions/27259621
复制相似问题