栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么未编译,反复使用的正则表达式在Python 3中如此慢?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么未编译,反复使用的正则表达式在Python 3中如此慢?

代码 更改。

在Python
2.7中,缓存是一个简单的字典。如果其中

_MAXCACHE
存储了多个项目,则在存储新项目之前将清除整个缓存。缓存查找只需要构建一个简单的键并测试字典,请参见2.7的实现
_compile()

在Python 3.x中,缓存已由

@functools.lru_cache(maxsize=500,typed=True)
decorator代替。这个装饰做

更多的工作,包括螺纹锁固,调整缓存LRU队列和维护缓存统计信息(通过访问
re._compile.cache_info()
)。参见3.3.0执行
_compile()
functools.lru_cache()

其他人也注意到了同样的减速,并在Python
Bugtracker中提交了问题16389。我希望3.4会再次更快。要么

lru_cache
改进实现,要么
re
模块将再次移至自定义缓存。

更新:对于版本4b4dddd670d0(hg)/
0f606a6(git),缓存更改已恢复为3.1中的简单版本。Python版本3.2.4和3.3.1包括该修订版。

从那时起,在Python
3.7中,模式缓存已根据常规更新为自定义FIFO缓存实现

dict
(依赖于插入顺序,并且与LRU不同,它不考虑撤出时最近使用缓存中的项目的最新情况)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624357.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号