gpt4 book ai didi

python - 在 Python 中使用多处理模块提高速度

转载 作者:行者123 更新时间:2023-11-28 22:50:33 24 4
gpt4 key购买 nike

我正在使用此示例测试 Python 中的多处理模块。它计算语料库中每个单词的长度。

from multiprocessing import Pool

def open_file(file):
with open(file) as f:
f = f.read()
return f

def split_words(file):
f = open_file(file)
return [[len(i), i] for i in f.split()]


def split_mult(file):
#uses the multiprocessing module
pool = Pool(processes = 4)
work = pool.apply_async(split_words, [file])
return work.get()

print split_words("random.txt") - about 90seconds for a 110K file
print split_mult("random.txt") - about 90seconds for a 110K file

*split_mult* 函数使用多重处理而 *split_words* 不使用。我的印象是使用多处理模块我会看到更快的处理时间,但运行时间几乎没有差异。每个函数我都运行了大约 5 次。有什么我想念的吗?

更新:

为了更好地理解多处理,我重写了代码,并且能够将处理时间缩短到大约 12 秒!这是快速而肮脏的代码,但希望对其他试图理解这个概念的人有所帮助 - https://github.com/surajkapoor/MultiProcessing-Test/blob/master/multi.py

最佳答案

Python 没有神奇地使您的代码并行工作的工具。

您在这里所做的是创建一个包含 4 个进程的池,并为其分配一个任务,该任务将在 1 个进程中运行。

进程/线程池用于并行运行大量任务(一次最多 4 个,或您指定的任何值)。
将任务拆分为多个子任务是程序员的责任。

关于python - 在 Python 中使用多处理模块提高速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22543508/

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