相关疑难解决方法(0)

如何使用 StdLib 和 Python 3 在一定范围内并行化迭代?

我几天来一直在寻找这个问题的答案,但没有结果。我可能只是不理解那些漂浮在外面的部分,并且该multiprocessing模块的 Python 文档相当大,对我来说不清楚。

假设您有以下 for 循环:

import timeit


numbers = []

start = timeit.default_timer()

for num in range(100000000):
    numbers.append(num)

end = timeit.default_timer()

print('TIME: {} seconds'.format(end - start))
print('SUM:', sum(numbers))
Run Code Online (Sandbox Code Playgroud)

输出:

TIME: 23.965870224497916 seconds
SUM: 4999999950000000
Run Code Online (Sandbox Code Playgroud)

对于此示例,假设您有一个 4 核处理器。有没有办法总共创建 4 个进程,其中每个进程都在单独的 CPU 核心上运行,并且完成速度大约快 4 倍,因此 24 秒/4 个进程 = 约 6 秒?

以某种方式将 for 循环分成 4 个相等的块,然后将这 4 个块添加到数字列表中以等于相同的总和?有一个 stackoverflow 线程:Parallel Simple For Loop但我不明白。谢谢大家。

python parallel-processing range multiprocessing python-3.x

5
推荐指数
1
解决办法
2468
查看次数