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

关键:在Python中的值存储可能会存储100 GB的数据,而无需客户端/服务器

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

关键:在Python中的值存储可能会存储100 GB的数据,而无需客户端/服务器

您可以使用sqlitedict,它为SQLite数据库提供键值接口。

SQLite限制页面说,取决于

page_size
和,理论最大值为140 TB
max_page_count
。但是,Python
3.5.2-2ubuntu0〜16.04.4(
sqlite3
2.6.0)的默认值为
page_size=1024
max_page_count=1073741823
。这提供了约1100
GB的最大数据库大小,可以满足您的要求。

您可以使用以下软件包:

from sqlitedict import SqliteDictmydict = SqliteDict('./my_db.sqlite', autocommit=True)mydict['some_key'] = any_picklable_objectprint(mydict['some_key'])for key, value in mydict.items():    print(key, value)print(len(mydict))mydict.close()

更新资料

关于内存使用情况。SQLite不需要您的数据集即可放入RAM。默认情况下,它最多缓存

cache_size
2MiB页(与上述相同的Python)。这是您可以用来检查数据的脚本。运行前:

pip install lipsum psutil matplotlib psrecord sqlitedict

sqlitedct.py

#!/usr/bin/env python3import osimport randomfrom contextlib import closingimport lipsumfrom sqlitedict import SqliteDictdef main():    with closing(SqliteDict('./my_db.sqlite', autocommit=True)) as d:        for _ in range(100000): v = lipsum.generate_paragraphs(2)[0:random.randint(200, 1000)] d[os.urandom(10)] = vif __name__ == '__main__':    main()

像这样运行它

./sqlitedct.py & psrecord --plot=plot.png --interval=0.1$!
。在我的情况下,它将生成此图表:

和数据库文件:

$ du -h my_db.sqlite 84M my_db.sqlite


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

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

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