Python 中的并行编程
传统上,OpenMP 用于 C 中的并行编程。但是,Python 不支持 OpenMP。这就提出了一个问题:我们如何并行化Python代码的特定部分来提高效率?
考虑以下代码结构:
solve1(A) solve2(B)
其中solve1和solve2是独立的函数。我们的目标是同时执行这些函数,减少整体运行时间。
在Python中,我们可以利用多处理模块来实现并行性。对于给定的场景,可以使用处理池:
<code class="python">from multiprocessing import Pool pool = Pool() result1 = pool.apply_async(solve1, [A]) # Evaluate "solve1(A)" asynchronously result2 = pool.apply_async(solve2, [B]) # Evaluate "solve2(B)" asynchronously answer1 = result1.get(timeout=10) answer2 = result2.get(timeout=10)</code>
此方法创建同时处理特定任务的进程。由于未指定进程,因此代码利用可用的 CPU 核心,允许每个核心同时执行一个进程。
要将列表映射到单个函数,我们可以使用:
<code class="python">args = [A, B] results = pool.map(solve1, args)</code>
请注意,不建议使用线程,因为 GIL(全局解释器锁)限制对 Python 对象的操作。利用进程可以规避此限制,从而实现真正的并发。
以上是如何在Python中实现并行以提高效率?的详细内容。更多信息请关注PHP中文网其他相关文章!