gpt4 book ai didi

python - 如何使搜索和计数更快?

转载 作者:行者123 更新时间:2023-12-01 00:05:17 25 4
gpt4 key购买 nike

def count_occurrences(string):
count = 0
for text in GENERIC_TEXT_STORE:
count += text.count(string)
return count

GENERIC_TEXT_STORE 是字符串列表。例如:

GENERIC_TEXT_STORE = ['this is good', 'this is a test', 'that's not a test']

给定一个字符串“text”,我想查找该文本(即“this”)在 GENERIC_TEXT_STORE 中出现了多少次。如果我的 GENERIC_TEXT_STORE 很大,那么速度会很慢。有哪些方法可以使搜索和计数更快?例如,如果我将大 GENERIC_TEXT_STORE 列表拆分为多个较小的列表,会更快吗?

如果多处理模块在这里有用,如何实现此目的?

最佳答案

首先,检查您的算法是否确实按照您想要的方式执行,如上面评论中所建议的那样。 count() 方法正在检查子字符串相等性,通过重构代码以仅测试完整的单词(假设这就是您想要的),您可能会得到很大的改进。像这样的事情可能适合你的条件。

any((word==string for word in text.split()))

多处理可能会有所帮助,因为您可以将列表拆分为较小的列表(每个核心一个),然后在每个进程完成时将所有结果相加(避免执行期间的进程间通信)。我通过测试发现,Python 中的多重处理在操作系统之间存在很大差异,Windows 和 Mac 可能需要相当长的时间才能真正生成进程,而 Linux 似乎要快得多。有些人说使用 pstools 为每个进程设置 CPU 亲和性很重要,但我发现这对我的情况没有太大影响。

另一个答案是考虑使用 Cython 将 Python 编译成 C 程序,或者用更快的语言重写整个程序,但当你标记这个答案 Python 时,我假设你不太热衷于此.

关于python - 如何使搜索和计数更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60024460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com