python - concurrent.futures.ProcessPoolExecutor 与 multiprocessing.pool.Pool

标签 python python-3.x concurrency parallel-processing multiprocessing

<分区>

请给我解释一下这两个类有什么区别

我注意到 Python 2 中存在 multiprocessing 模块。但是功能上呢?

最佳答案

如文档中所述,concurrent.futures.ProcessPoolExecutormultiprocessing.Pool 的包装器。因此,multiprocessing 的相同限制适用(例如,对象需要是可腌制的)。

然而,concurrent.futures 旨在提供一个抽象接口(interface),可用于以方便的方式管理不同类型的异步任务。例如将异步策略从使用进程池更改为使用线程通常就像更改一两行代码一样简单(而不是需要自己编写所有代码)。抽象的另一个(相关)好处是 concurrent.futures 提供了一个单一的 API 来记住——你可以选择最适合任务的执行器。使用您的进程 IO 受限了吗?太棒了,使用 ThreadPoolExecutor。您是否会因为全局解释器锁 (GIL) 而无法加快速度?没问题,使用 ProcessPoolExecutor

关于python - concurrent.futures.ProcessPoolExecutor 与 multiprocessing.pool.Pool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38311431/

相关文章:

python - `data_files` 与 `setup.py` + `pip` 的跨平台支持

python-3.x - 将 'flask_oauthlib.client' 更新/转换为 'authlib.flask.client' - 无需用户即可访问 Microsoft Graph v2

python - 如何在 Python 3.2 或更高版本中使用 'hex' 编码?

java - 调用 Java 对象的 wait() 中断线程同步

python - PyPI 角色维护——所有者与维护者

python - 每个连接都有单独的线程?

python - 函数矩阵、SymPy 和 SciPy 的数值积分

python - Python索引错误: list assignment index out of range ,

mysql - 悲观与乐观并发控制实现

java - 多线程 Java 应用程序中的问题 - 同步方法未按预期工作