chinapnr / fishbase

自主开发、整理的一套 Python 基础函数库,涵盖 system 系统增强包、logger 日志记录增强包、file 文件处理增强包、 date 日期处理函数包、data 数据信息处理函数包、csv 处理增强函数包、crypt 加密/编码增强包等,可减少程序开发工作量、降低引用复杂度。
MIT License
94 stars 29 forks source link

银行卡,身份证依赖的信息从 sqlite 及 csv 中读取会造成 IO 过多 #232

Closed sh-xin-guo closed 4 years ago

sh-xin-guo commented 5 years ago

现在生成银行卡,身份证信息等需要从 sqlite 和 csv 中读取地区信息等,每次执行函数都会进行一次IO。在 parrot 等需要批量生成数据的时候,会造成大量 io ,导致 cpu 及内存占用迅速上升,在生成百万级别数据时会直接造成应用奔溃。

建议这些信息直接使用静态变量的形式存放。

wingfish commented 5 years ago

这个提的挺好的,我写过一些python 缓存的介绍,开发团队看一下,有没有帮助。 在 https://github.com/chinapnr/python_study/tree/master/section_01_计算缓存、优化算法和加速%20Python%20执行

python 自带的 lru_cache 看看是否可以满足,代码可能要修改一下,这样很多重复的入参就不需要从数据库读了。

还有个办法是把 sqlite 数据读到内存,但是这样好像多线程会有问题。所以还是用缓存吧,用非侵入的缓存装饰器。

itaa commented 5 years ago

好的,我们试一下

mindjun commented 4 years ago

使用 lru_cache,测试得到生成速率为 5000/s