了解python cProfile输出

时间:2014-12-02 21:48:18

标签: python csv cprofile

我的python脚本按顺序解析文件,并简单地清理数据并写入新的csv文件。我正在使用csv。脚本运行时间非常长。

cProfile输出如下:enter image description here

在此处发布问题之前,我已经做了很多谷歌搜索。

链接到图片image link

在这里添加代码,这个函数叫做

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()

1 个答案:

答案 0 :(得分:0)

我在answer by John Machin中找到了这个解释。

  

ncalls仅与比较数字有关   与其他计数相对应,例如文件中的字符/字段/行数   可能是高度异常; tottime和cumtime是真正重要的。   cumtime是在函数/方法中花费的时间,包括时间   花在它调用的函数/方法上; tottime是时间   在函数/方法中花费的时间不包括花费的时间   它调用的函数/方法。