天天看点

python增量计算

在rsync同步数据后,因业务需要以及文件大小限制,需要对数据做增量分析,而每次都需要拿出文件的增量部分。

linux有差异计算命令diff以及补丁工具patch,都不是很符合预期。这两种工具都是需要对两个文件进行对比,而若如此做的话,其一计算增量耗时,其二需要有一个原数据的副本文件。多余的副本文件会导致额外的存储开销,以及数据移动成本。

又因同步过来的数据是多个application的数据,需要针对不同的app进行增量计算,提交给相应的计算任务。希望每次在rsync后直接做增量计算,这里就考虑到直接使用python脚本编写。

如上所示,是diff计算的demo代码。对每次增量计算的位移量进行保存,下次再进行增量计算时,就可以从位移量处直接读取。

比之用diff,path少了副本相应开销,速度也可观。增加main后也可以直接在shell中调用。

实现为module,则如下代码所示:

如上代码可供参考,在python 2.7.3下测试OK。