python - python中的文本或数据库,速度和资源消耗

标签 python database text python-2.7

只是查询个人经验和对局限性的理解等。例如,如果我有一个包含 100,000 行(条目)的文本文件和一个包含 100,000 个相同条目的数据库,每个条目包含一个单词且没有 double ,哪一个我是否能够更快地处理并且占用最少的内存?

据我了解,我可以在开始时将整个文本文件加载到内存中的列表中(仅约 1MB。)此信息用于确认字符串内容。字符串中的每个单词(由空格分隔)都必须存在于文件中,否则它会更改为列表中最相似的条目。简而言之,它是非常高级的自动更正。然而,可悲的是,我不得不重新发明轮子。

所以无论如何,我的问题仍然存在。哪个是我最好的选择?我正在尝试使用尽可能少的外部模块,所以我想我可能会坚持使用 SQLite(它是标准的,不是吗?虽然再多一个也没什么坏处)如果换行符分隔的文本文件是我最快和最经济的选项,我应该采用特定的方式来处理它们吗?我希望这个脚本能够在一秒钟内执行至少 100 个匹配操作,如果使用 Python 这样的语言在计算上是可行的话。

最佳答案

如果将所有 100,000 个单词加载到一个 Python 集中,确定给定单词是否在该集中将是 O(1) - 没有比这更快的了。惩罚将是启动 python 应用程序时的延迟,因为 Python 必须加载所有数据,大约需要几秒钟。

如果将单词加载到 SQLite(或任何其他 SQL 数据库)中,则需要基于散列的索引才能达到相同的性能顺序。我不确定 SQLite 是否具有该索引类型。 MySQL 没有。

SQL 数据库通常没有查找“相似”词的功能,因为每个用户对“相似”都有自己的定义。在 Python 中实现它会容易得多,但也许您选择的数据库中有您正在寻找的东西。

最佳选择取决于您未提及的其他要求。 100,000 个单词是否经常更改?除了您之外,其他人(非程序员)是否需要维护它们?如果是这样,数据库可能会更方便,您可能希望以速度为代价来换取它。另外,您多久启动一次 Python 应用程序?如果您运行它来测试单个单词,您将等待每个单词几秒钟。另一方面,如果您编写一个守护进程/服务器并添加一个接口(interface)(套接字、HTTP 等),您只需加载一次数据,就可以向它抛出大量的单词。

关于python - python中的文本或数据库,速度和资源消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13893486/

相关文章:

Python 和 opencv : how do I convert the ALL of the background of this image to one colour or transparent

python - Confluence kafka 是否提供了用于 python 中的流式处理、分组和聚合的 api?

python - 在 python lambda 函数中使用 OR 运算符

java - 如何获取表单中的UserID并将其添加到表中?

database - 用于处理 App Engine 数据转储的工具

python - 这样的进口合法还是不推荐?

java - Hibernate:多个表,同一个对象

Python - 复制元素的属性并粘贴到另一个文本文件上

Android 将字符串加载到数组中

r - 使用 R 文本分析进行词干提取