1

看着multiprocessing.Pool.apply_async我期待它返回一个未来。可悲的是,它似乎基于回调。

现在,如果我想调用multiprocessing.Pool.apply但将其包装在 Future 中(因此它会被异步处理),这可能吗?

4

1 回答 1

1

该类multiprocessing.Pool是基于进程的工人池的旧 Python 实现。它是在concurrent.futures模块之前设计的。

apply_async方法返回一个与该ApplyResult对象类似的对象Future

如果你想坚持Future对象,你需要使用concurrent.futures.ProcessPoolExecutor,顾名思义,它是基于进程的。因此,它不受 GIL 的影响。

如果您需要更高级的功能,例如对初始化函数或超时的支持,您可以查看Pebble

于 2016-12-21T13:55:24.057 回答