了解 python cProfile 输出

Posted

技术标签:

【中文标题】了解 python cProfile 输出【英文标题】:Understanding python cProfile output 【发布时间】:2014-12-02 21:48:17 【问题描述】:

我的 python 脚本按顺序解析文件,并进行简单的数据清理并写入新的 csv 文件。我正在使用csv。该脚本需要很长时间才能运行。

cProfile输出如下:

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

图片链接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】:

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

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

【讨论】:

以上是关于了解 python cProfile 输出的主要内容,如果未能解决你的问题,请参考以下文章

关于python性能相关测试cProfile库

可以profilehooks,写.prof文件吗?

python性能测定02

cProfile命令行如何减少输出

过滤掉不相关的 cProfile 输出

Pandas:如何将 cProfile 输出存储在 pandas DataFrame 中?