一個奇特的腳本輸出日誌方式-----記錄時間方式

我的python是野路子出身,平常會寫一些腳本處理少量數據。當然處理數據的過程中,都要有一些輸出記錄腳本是否是在執行或者是程序中間出錯卡死了,一般的辦法是在處理完一個文件就做一個輸出,但是當要處理的文件很小數量很多,這時每個文件的處理很快腳本的輸出會佔用很多時間(當輸出時間大於處理時間時,嘻嘻嘻~)。我看過的源碼一種解決方式是,記錄處理個數,每1000個做一次輸出。而今天說的是我前幾日又看的一段開源腳本的處理方式-------通過記錄時間。如下僞代碼:


時間開始

for ...

   for...

       if 時間結束 - 時間開始 > 某值:

            輸出日誌

            時間開始

       ...

僞代碼很好理解,第二個“時間開始”和“輸出日誌”在一層。


但是這樣的方式有一個缺點,這也是我去看源碼的原因。如果你的輸出日誌記錄的是“當前處理到的文件”,那麼如果長時間不看代碼或者編碼者之外的人運行這個腳本就會奇怪“這個日誌輸出文件名不是有序的也沒有規律可循,是不是我理解錯了還是腳本寫的有問題?”,畢竟每個文件的處理時間有差別,輸出就不是規律的了。解決方法是在腳本的執行初始就對這樣的輸出方式解釋一遍,或者readme。


至於它的優點,First,不用一直輸出,節省時間,輸出少一些輸出日誌也會乾淨一些;Second,不用記錄處理個數,沒有做過嘗試,但是記錄個數在有多個循環時要不停的計算,浪費時間。

另外很多輸出日誌也利用循環的下標,當下標可以整除1000時輸出日誌。和時間記錄的方式相比,缺點很明顯,當循環有多層時,使用下標方法無法再使用。而且以C語言中一直強調的“能用加減就不要用乘除”的原則,記錄時間方法是更加節省時間的。



總之,輸出日誌是必須的,但是不能影響時間效率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章