python babel包解析locale性能慢的问题

python babel包解析locale性能慢的问题

背景

BabelPython 的一个国际化工具包,公司的一个系统用到它来处理国际化,其中一个场景是解析locale,即:

在导出一张很大的报表时,总共调用了parse 9万多次,花费了将近130秒,这个时间是无法接受的。

 

解决

在babel项目的issue中,找到了同样问题的描述 https://github.com/python-babel/babel/issues/620,并且在一PR中已经得到优化 https://github.com/python-babel/babel/pull/644

优化后的版本为2.7.0,所以最终解决办法是升级babel。卸载重装babel:

 

对比试验

将下面程序分别在babel 2.3.4版本和babel 2.7.0版本执行:

得到如下执行结果:

  • label 2.3.4

  • label 2.7.0

可以看出优化后的效果还是相当显著的。足足快了一个数量级。