Multiprocessing.Pool:我应该使用哪种方法?
Multiprocessing 允许 Python 跨多个进程同时执行函数。然而,选择合适的方法可能会令人困惑,特别是在考虑 Pool.apply、Pool.apply_async 和 Pool.map 时。让我们澄清它们的差异和用例:
Pool.apply vs. Pool.apply_async vs. Pool.map
1. Pool.apply:
2. Pool.apply_async:
3. Pool.map:
选择正确的方法
在以下情况下使用 Pool.apply:
如果满足以下条件,请使用 Pool.apply_async:
使用 Pool.map 如果:
示例:Pool.apply_async 中的异步回调
<code class="python">import multiprocessing as mp import time def foo_pool(x): time.sleep(2) return x*x result_list = [] def log_result(result): result_list.append(result) def apply_async_with_callback(): pool = mp.Pool() for i in range(10): pool.apply_async(foo_pool, args = (i, ), callback = log_result) pool.close() pool.join() print(result_list) if __name__ == '__main__': apply_async_with_callback()</code>
输出:
[1, 0, 4, 9, 25, 16, 49, 36, 81, 64]
请注意,结果的顺序可能与函数调用的顺序不一致,与 Pool.map 不同。
以上是在 Python 多处理中我应该使用哪种池方法?的详细内容。更多信息请关注PHP中文网其他相关文章!