如何提高使用正则表达式处理文件的速度,而使用pypy需要更多的CPU时间?

问题描述

在读取文本日志文件(后缀日志)时,我需要检查某些模式以对行进行分区/分割行以将属性值存储在文本日志文件的每一行中。因此,使用正则表达式“ re.search”方法如下:

                if (re.search(' ms\n$',line)):
                    line2 += line.partition('...')[2].split('\n')[0]
                    break

代码是否等效于:

                if ' ms\n' in line:
                    line2 += line.partition('...')[2].split('\n')[0]
                    break

后面的代码会提高python代码的执行速度吗? 如果每天要进行大量此类模式搜索并在postgres表中以更快的速度更新值,那么如何改善文件的处理。每天我们要存储大约300000条记录,大约每天读取一个大小为1474175681字节的文本文件。目前这占用了100%的cpu,而且也不快。如何优化代码?大多数代码只是检查文件行中的某些关键字,并像上面的代码一样进行处理。

解决方法

您应该使用line.endswith(' ms\n'),它完全等效于re.search(' ms\n$',line),而且速度要快得多。

,

最快的代码是您不执行的代码。重新思考问题的工作流程,避免将文本从数据库中拉出来,而只是在python中处理它。