concurrent.futures

时间:2016-07-19 10:47:49

标签: python concurrency parallel-processing concurrent.futures

我在concurrent.futures中看到了两种指定超时的方法。

  • as_completed()
  • wait()

这两种方法都处理N个期货。

我想为每个未来指定一个单独的超时。

用例:

  • 从数据库获取数据的未来超时为0.5秒。
  • 从HTTP服务器获取数据的未来超时为1.2秒。

如何使用concurrent.futures处理此问题?或者这个库不是正确的工具吗?

结论

1 个答案:

答案 0 :(得分:5)

如何实现自己的:

wait(dbfutures + httpfutures, timeout=0.5)
[fut.cancel() for fut in bdfutures if not fut.done()]
wait(httpfutures, timeout=0.7)
[fut.cancel() for fut in httpfutures if not fut.done()]

(或带睡眠/检查的while循环或等待短暂超时)