天天看點

python增量計算

在rsync同步資料後,因業務需要以及檔案大小限制,需要對資料做增量分析,而每次都需要拿出檔案的增量部分。

linux有差異計算指令diff以及更新檔工具patch,都不是很符合預期。這兩種工具都是需要對兩個檔案進行對比,而若如此做的話,其一計算增量耗時,其二需要有一個原資料的副本檔案。多餘的副本檔案會導緻額外的存儲開銷,以及資料移動成本。

又因同步過來的資料是多個application的資料,需要針對不同的app進行增量計算,送出給相應的計算任務。希望每次在rsync後直接做增量計算,這裡就考慮到直接使用python腳本編寫。

如上所示,是diff計算的demo代碼。對每次增量計算的位移量進行儲存,下次再進行增量計算時,就可以從位移量處直接讀取。

比之用diff,path少了副本相應開銷,速度也可觀。增加main後也可以直接在shell中調用。

實作為module,則如下代碼所示:

如上代碼可供參考,在python 2.7.3下測試OK。