我有一个 Python 脚本,它将一些日志数据导入 StringIO 对象,然后逐行读取其中的数据,并将它们输入到数据库表中。经过一些迭代后,该脚本需要相当长的时间。解释一下,运行 1500 条日志需要大约 1.6 秒,运行 3500 条日志需要大约 1 分 16 秒,然后运行 1100 条日志需要 20 秒!
我的脚本布局如下:
for dir in dirlist:
file = StringIO.StringIO(...output from some system command to get logs...)
for line in file:
ctr+=1
...
do some regex matches and replacements
...
cursor.insert(..."insert query"...)
if ctr >= 1000:
conn.commit() # commit once every 1000 transactions
请您参考如下方法:
使用 cProfile 分析您的脚本并找出实际花费的时间。在没有任何细节的情况下仅仅猜测时间花在了哪里通常没有帮助。分析会告诉您性能问题是与某些正则表达式匹配的东西有关还是与插入查询有关。
