处理字符串的最有效数组

2024-05-08 19:33:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大约6亿字的语料库。我想把它变成一个字符串列表,然后再处理它,但是我担心处理一个包含6亿个元素的列表会很慢。我想知道Python中是否有高性能的(单词)列表等价物。在

更新:

我想把每个单词映射到两个标签中的一个,然后为它们计算一些分数。分数基本上是一个分数,其中分子是它们在特定环境中出现的频率(例如在某些特定单词之前),分母是它们在语料库中的总体频率。这几乎就是我心中的任务。在


Tags: 字符串元素列表环境高性能标签单词分子
2条回答

这实际上可以归结为你的用例和你想用“6亿字”做什么。在

如果您绑定到Python,请查看Dask.distributed或{a2}。然而,正如intboolstring所说,Python可能不是您的最佳选择。在

另一种选择是,带有Hadoop之类的MapReduce是处理大量数据的好方法。您没有真正解释您的应用程序环境,因此很难提供更多的见解。在

@暗影护林员说得对,你应该告诉我们更多关于你想做什么的细节好的。这些我的建议。

  • 首先,检查代码,找出问题的瓶颈,而不是仅仅猜猜。如果您想做的不是I/O绑定,也许多处理是一个好选择。

  • 数据结构非常重要因素。如果您想处理大型对象,最好的方法是选择最合适的数据结构。也许您可以尝试deque这是一个列表式容器,具有快速附件,两端都会弹出,而不是^{{cd1>}。

Deques are a generalization of stacks and queues (the name is pronounced “deck” and is short for “double-ended queue”). Deques support thread-safe, memory efficient appends and pops from either side of the deque with approximately the same O(1) performance in either direction.

  • 内存管理,如果数据的大小非常大,请尝试围绕^{{cd2>}和^{cd3>}构造此代码,而不是大量的项目列表,它将帮助您避免内存耗尽,并改进代码。

  • mmap可能会帮助您处理大型文件。

Memory-mapped file objects behave like both strings and like file objects.

请参阅High-performance container datatypes中的详细信息。

相关问题 更多 >