如何并行化 Python 循环以获得多核性能
问题:
对于 CPU -bound Python 循环,我们如何有效地并行化操作以利用多个的力量核心?
答案:
Python 解释器强制执行全局解释器锁 (GIL),禁止同一解释器的线程并发执行 Python 代码。因此,对于 CPU 密集型任务,利用多个进程而不是线程会更高效。
与进程池的并行化:
Python 提供了两种创建进程池的简单方法:
pool = multiprocessing.Pool(4) out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
此方法利用多处理模块并可以直接控制线程计数。但是,它可能容易受到交互式解释器中的问题的影响。
with concurrent.futures.ProcessPoolExecutor() as pool: out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
此方法采用并发.futures.ProcessPoolExecutor 并在多处理模块之上运行,提供类似的
两种方法都通过将循环迭代分配到单独的进程来实现并行化,从而显着提高 CPU 密集型计算的性能。
以上是如何并行化受 CPU 限制的 Python 循环以获得多核性能?的详细内容。更多信息请关注PHP中文网其他相关文章!