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

python中的文本或数据库、速度和资源消耗,python,database,text,python-2.7,Python,Database,Text,Python 2.7,仅仅是对个人经验和对限制的理解等的查询。例如,如果我有一个包含100000行(条目)的文本文件和一个包含100000个相同条目的数据库,每个条目包含一个单词,并且没有双精度,那么我能更快地处理哪一个,哪一个消耗最少的内存 据我所知,我可以在开始时将整个文本文件加载到内存中的列表中(仅约1MB)。此信息用于确认字符串内容。字符串中的每个单词(由空格分隔)都必须存在于文件中,否则将更改为列表中最相似的条目。简而言之,它是非常高级的自动更正。然而,不幸的是,我不得不重新发明轮子 所以不管怎样,我的问题

仅仅是对个人经验和对限制的理解等的查询。例如,如果我有一个包含100000行(条目)的文本文件和一个包含100000个相同条目的数据库,每个条目包含一个单词,并且没有双精度,那么我能更快地处理哪一个,哪一个消耗最少的内存

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


所以不管怎样,我的问题仍然存在。哪一个是我最好的选择?我试图使用尽可能少的外部模块,所以我想我可能会坚持使用SQLite(它是标准的,不是吗?尽管还有一个不会有什么坏处)如果换行符分隔的文本文件是我最快和最经济的选择,那么有没有具体的方法来处理它们?我希望这个脚本能够在一秒钟内执行至少100个匹配操作,如果用Python这样的语言计算的话

如果将所有100000个单词加载到一个Python集中,那么确定给定单词是否在该集中的速度将非常快。由于python必须加载所有数据,因此启动python应用程序时的延迟将是一个惩罚,大约为几秒钟

如果将单词加载到SQLite(或任何其他SQL数据库),则需要基于哈希的索引来实现相同的性能顺序。我不确定SQLite是否有这种索引类型。MySQL没有

SQL数据库通常没有查找“相似”单词的功能,因为每个用户都有自己的“相似”定义。在Python中实现这一点要容易得多,但是您选择的数据库可能有您想要的东西


最佳选择取决于您没有提到的其他要求。10万个单词经常变化吗?您身边的其他人(非程序员)是否需要维护他们?如果是这样的话,数据库可能会更方便,您可能想用速度来换取它。另外,您多久启动一次Python应用程序?如果您运行它来测试单个单词,您将为每个单词等待几秒钟。另一方面,如果您编写一个守护进程/服务器并添加一个接口(套接字、HTTP等),您只需加载一次数据,就可以向它抛出大量的文字。

免责声明:与性能一样,不依赖于假设,而是衡量。

尽管如此,以下是一些考虑因素:

  • 无论是使用数据库还是纯文本文件,数据结构和算法的选择都可能对性能产生重大影响。例如,在任何一种情况下,通过列表进行暴力搜索都是低效的
  • 优化的内存数据结构可能比磁盘数据库更快
  • 另一方面,数据库解决方案是可以更有效地使用内存

你忘了定义“进程”。他说他需要测试列表中是否包含其他单词,并找到类似的匹配项。现在,至少程序将在24小时内一次运行几分钟(计算机每24小时重新启动以清除内存),因此,如果只需额外几分钟,加载时间也不是什么大问题。而且这个列表(目前)并不经常变化。看起来我正在将这些单词加载到python集中!谢谢你的帮助:)谢谢你的帮助oefe,蛮力搜索听起来确实很慢,但我不确定还有其他选择。我将在另一个问题中提出这个问题。我同意,在记忆中听起来确实是个更好的主意。内存消耗不如速度重要(现在几乎总是如此),因此我现在将坚持使用更基本的解决方案。谢谢!:)