并行化简单的 Python 循环
CPython 中的全局解释器锁 (GIL) 可以防止多个线程并发执行 Python 代码。因此,对于 CPU 密集型工作负载(如示例循环中所示的工作负载),利用进程更为有效。
Python 标准库提供了两种创建进程池的简单方法:
1 。多处理模块:
pool = multiprocessing.Pool(4) out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
2.并发.futures.ProcessPoolExecutor:
with concurrent.futures.ProcessPoolExecutor() as pool: out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
使用任一方法,calc_stuff函数都会并行执行,并将结果收集到输出列表out1、out2和out3中。这种方法有效地并行计算并利用系统上的多个处理器。
以上是如何并行化简单的 Python 循环以克服 GIL 限制?的详细内容。更多信息请关注PHP中文网其他相关文章!