加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何最好地在Python中存储大量文本?

发布时间:2020-12-20 13:39:21 所属栏目:Python 来源:网络整理
导读:我最近发现我的一个学生在做一个独立的项目,他在字典中使用非常大的字符串(2-4MB)作为值. 我从来没有理由使用如此大的文本块,这让我想知道是否存在与创建如此大的字符串相关的性能问题. 有没有比简单创建字符串更好的方法呢?我意识到这个问题主要取决于上下
我最近发现我的一个学生在做一个独立的项目,他在字典中使用非常大的字符串(2-4MB)作为值.

我从来没有理由使用如此大的文本块,这让我想知道是否存在与创建如此大的字符串相关的性能问题.

有没有比简单创建字符串更好的方法呢?我意识到这个问题主要取决于上下文,但我正在寻找可能涵盖多个可能用例的广义答案.

如果您正在使用那么多文本,那么如何将它存储在代码中,并且如果您只使用只有几个字符的普通字符串,您会做什么不同的事情吗?

解决方法

这很大程度上取决于你对字符串的处理方式.我不完全确定 Python如何存储字符串,但我已经在XEmacs(类似于GNU Emacs)和Emacs Lisp的底层实现上做了很多工作,这是一种像Python这样的动态语言,我知道字符串是怎样的在那里实施.字符串将被存储为类似于数组的内存块.在Python中创建大型数组并不是一个大问题,所以我不认为简单地以这种方式存储字符串会导致性能问题.有些事情需要考虑:

>你是如何建立弦乐的?如果你通过简单地附加到更大的字符串来逐个构建,那么你的O(N ^ 2)算法将非常慢. Java使用StringBuilder类处理它.我不确定Python中是否存在确切的等价物,但您可以简单地创建一个包含您想要连接在一起的所有部分的数组,然后使用’.join(数组)在最后加入.
>你需要搜索字符串吗?这与创建字符串无关,但需要考虑.搜索通常是字符串大小的O(n);有加速度使其成为O(n / m),其中m是您正在搜索的子字符串的大小,但这就是它.这里主要考虑的是存储一个大字符串还是一系列子字符串.如果您需要搜索所有子字符串,那么搜索大字符串将无济于事,但您可能事先知道某些部分不需要搜索.
>您需要访问子串吗?同样,这与创建字符串无关,这是需要考虑的事情.按位置访问子字符串只是索引到正确的内存位置,但是如果需要获取大的子字符串,它可能效率低下,并且您可以通过将字符串存储为子字符串数组来加快速度,然后创建一个新字符串作为另一个数组,其中一些字符串共享.但是,这样做需要工作,除非真的有必要,否则不应该这样做.

总而言之,我认为对于简单的情况来说,拥有这样的大字符串是很好的,但是你应该考虑你将要执行的各种操作以及它们的O(…)时间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读