看着multiprocessing.Pool.apply_async
我期待它返回一个未来。可悲的是,它似乎基于回调。
现在,如果我想调用multiprocessing.Pool.apply
但将其包装在 Future 中(因此它会被异步处理),这可能吗?
看着multiprocessing.Pool.apply_async
我期待它返回一个未来。可悲的是,它似乎基于回调。
现在,如果我想调用multiprocessing.Pool.apply
但将其包装在 Future 中(因此它会被异步处理),这可能吗?
该类multiprocessing.Pool
是基于进程的工人池的旧 Python 实现。它是在concurrent.futures
模块之前设计的。
该apply_async
方法返回一个与该ApplyResult
对象类似的对象Future
。
如果你想坚持Future
对象,你需要使用concurrent.futures.ProcessPoolExecutor,顾名思义,它是基于进程的。因此,它不受 GIL 的影响。
如果您需要更高级的功能,例如对初始化函数或超时的支持,您可以查看Pebble。