2013-06-20 150 views
2

我有一個Python腳本,它將一些日誌數據導入到StringIO對象中,然後逐行讀取數據並將它們輸入到數據庫表中。腳本在迭代後需要相當長的時間。要解釋一下,運行1500個日誌需要1.6秒,而通過3500個日誌需要約1分鐘16秒,然後運行1100個日誌需要20秒!Python腳本運行時間更長

我的腳本佈局如下:

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 
+1

我強烈懷疑性能在數據庫級別下降。如果您停止並每1000個項目重新啓動腳本,性能是否仍然下降? – nOw2

+0

我同意。但是,如果沒有「做一些正則表達式匹配和替換」的實際代碼細節,它就會留下一個疑問! –

+0

直到現在,我已經試過一次運行腳本。我會嘗試對每個目錄運行一次,並且看看它是如何執行的 – mavili

回答

1

使用CPROFILE來分析你的腳本,並找出其中的時間實際花費。僅僅猜測時間在哪裏沒有任何細節,通常不會有幫助。性能分析會告訴你性能問題是否與某些正則表達式匹配的東西或插入查詢有關。