一个奇特的脚本输出日志方式-----记录时间方式

我的python是野路子出身,平常会写一些脚本处理少量数据。当然处理数据的过程中,都要有一些输出记录脚本是否是在执行或者是程序中间出错卡死了,一般的办法是在
处理完一个文件就做一个输出,但是当要处理的文件很小数量很多,这时每个文件的处理很快脚本的输出会占用很多时间(当输出时间大于处理时间时,嘻嘻嘻~)。我看过的源
码一种解决方式是,记录处理个数,每1000个做一次输出。而今天说的是我前几日又看的一段开源脚本的处理方式——-通过记录时间。如下伪代码:

时间开始

for ...

   for...

       if 时间结束 - 时间开始 > 某值:

            输出日志

            时间开始

       ...

伪代码很好理解,第二个“时间开始”和“输出日志”在一层。

但是这样的方式有一个缺点,这也是我去看源码的原因。如果你的输出日志记录的是“当前处理到的文件”,那么如果长时间不看代码或者编码者之外的人运行这个脚本就会奇怪
“这个日志输出文件名不是有序的也没有规律可循,是不是我理解错了还是脚本写的有问题?”,毕竟每个文件的处理时间有差别,输出就不是规律的了。解决方法是在脚本的执
行初始就对这样的输出方式解释一遍,或者readme。

至于它的优点,First,不用一直输出,节省时间,输出少一些输出日志也会干净一些;Second,不用记录处理个数,没有做过尝试,但是记录个数在有多个循环时要
不停的计算,浪费时间。

另外很多输出日志也利用循环的下标,当下标可以整除1000时输出日志。和时间记录的方式相比,缺点很明显,当循环有多层时,使用下标方法无法再使用。而且以C语言中
一直强调的“能用加减就不要用乘除”的原则,记录时间方法是更加节省时间的。

总之,输出日志是必须的,但是不能影响时间效率。

文章作者:Lily

原始链接:/2017/05/11/%E4%B8%80%E4%B8%AA%E5%A5%87%E7%89%B9%E7%9A%84%E8%84%9A%E6%9C%AC%E8%BE%93%E5%87%BA%E6%97%A5%E5%BF%97%E6%96%B9%E5%BC%8F-----%E8%AE%B0%E5%BD%95%E6%97%B6%E9%97%B4%E6%96%B9%E5%BC%8F/

版权说明:转载请保留原文链接及作者。