使用线程池实现对英语单词的出现频率统计

该示例展示了如何在Python中利用线程池(ThreadPoolExecutor)并行处理文本,统计单词频率。通过将文本转换为小写,拆分单词并使用Counter类,可以有效地计算每个文本中的单词计数。最终,所有结果合并到一个总的Counter对象中,以便查看整个文本集的单词分布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这个示例中,我们首先定义了一个文本列表 # text_list,其中包含了要进行单词频率统计的文本。

然后,我们定义了一个 count_word_frequency  函数,用于对每个文本进行单词频率统计。该函数将文本转换为小写,并使用 split() 方法将其拆分为单词,然后使用 Counter 类来统计每个单词的出现次数。

接下来,我们使用 ThreadPoolExecutor 创建一个线程池,并通过 executor.map() 方法将每个文本的处理任务提交给线程池。这将返回一个可迭代对象 results,其中包含了每个文本的单词频率统计结果。

最后,我们使用一个循环将所有的单词频率统计结果合并到一个最终的 Counter 对象 final_word_counts  中。

然后,我们遍历  final_word_counts 打印每个单词及其出现次数。

完整代码如下:

import concurrent.futures
from collections import Counter
# 假设这是你生成的文本列表
text_list = [
    'Hello,how are you, I am doing great,thank you, What are your plans for today, I plan to go for a walk in the park'
]
# 单词频率统计函数
def count_word_frequency(text):
    words = text.lower().split()
    word_counts = Counter(words)
    return word_counts

# 使用线程池进行单词频率统计
with concurrent.futures.ThreadPoolExecutor() as executor:
    # 提交每个文本的处理任务给线程池
    results = executor.map(count_word_frequency, text_list)

# 合并所有单词频率统计结果
final_word_counts = Counter()
for result in results:
    final_word_counts += result

# 打印单词频率统计结果
for word, count in final_word_counts.items():
    print(f'{word}: {count}')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值