Multiprocessing.Pool:了解Apply、Apply_Async 和Map
Python 中的多处理允许在单独的进程中并发执行任务。 multiprocessing.Pool 提供了多种方法来运行具有不同配置的函数:apply、apply_async 和 map。本文通过示例阐明了这些方法之间的区别。
Apply 与 Apply_Async
与 Python 内置的 apply 类似,Pool.apply 在单独的函数中执行函数进程并阻塞直到完成。如果您需要立即访问结果,这非常适合。
相反,Pool.apply_async 异步调用函数,返回 AsyncResult 对象。要获取实际结果,您必须对 AsyncResult 调用 get(),这将阻塞直到函数完成。当您希望避免在等待结果时阻塞主进程时,此方法很有用。
Map
Pool.map 将指定的函数应用于多个参数,保留参数和结果的顺序。与 apply_async 不同,map 会阻塞,直到所有结果都可用。当您需要按特定顺序排列结果或想要将它们合并为单个结果时,此方法非常理想。
汇总表
Method | Execution | Blocking | Result Order |
---|---|---|---|
apply | In a separate process | Yes | N/A |
apply_async | Asynchronously | No | Not guaranteed |
map | In separate processes | Yes | Preserved |
使用案例
以上是您应该使用哪种 Multiprocessing.Pool 方法:Apply、Apply_Async 还是 Map?的详细内容。更多信息请关注PHP中文网其他相关文章!