Meaning
Waits for a set of Future objects to complete, optionally with a timeout and a condition for when to return (e.g., when the first future completes). Returns two sets: done and not_done futures.
Primary Function
Concurrency control
Communicative Purpose
Synchronize multiple asynchronous operations and react when a subset finishes.
Pattern
concurrent.futures.wait(futures, timeout=timeout, return_when=return_when)
Core Structure
concurrent.futures.wait(..., timeout=..., return_when=...)
Função primária
Concurrency control
Propósito comunicativo
Synchronize multiple asynchronous operations and react when a subset finishes.
Situações de gatilho
Waiting for any of several parallel tasks to finish; implementing a timeout for a group of futures; collecting results as soon as the first task completes.
Contextos
Python programs using concurrent.futures.ThreadPoolExecutor or ProcessPoolExecutor; async-like patterns with futures.
Padrão
concurrent.futures.wait(futures, timeout=timeout, return_when=return_when)
Estrutura central
concurrent.futures.wait(..., timeout=..., return_when=...)
Slots de substituição
futures: iterable of Future, timeout: float or None, return_when: constant from concurrent.futures (FIRST_COMPLETED, FIRST_EXCEPTION, ALL_COMPLETED)
Colocados típicos
- ThreadPoolExecutor
- ProcessPoolExecutor
- Future.result
- as_completed
Substituições comuns
- using concurrent.futures.as_completed for iterative processing
- using wait with timeout=None
Erros comuns
forgetting to handle the returned done/not_done sets; assuming wait returns results directly; using timeout incorrectly leading to premature return
Similar / contraste
concurrent.futures.as_completed (yields futures as they complete) vs wait (blocks until condition); threading.Event (simple barrier)
Interferências
Coming from Java's ExecutorService.invokeAny/invokeAll: may expect similar behavior but Python's wait returns sets, not results.
Família do chunk
- concurrent.futures.as_completed
- concurrent.futures.map
- threading.Barrier
Nuance
wait does not cancel unfinished futures; timeout only affects the wait call, not the futures themselves; return_when determines which set is returned as done.
Efeito pragmático
Enables clear synchronization point for concurrent tasks, reducing boilerplate polling.
Dica de memória
Wait for the first future to cross the finish line.
Nota
wait() returns two sets of Futures (done, not_done); it does not cancel unfinished futures, and timeout only affects the wait call itself.
Upgrade path
Using asyncio.wait for coroutine-based concurrency
Log in to save chunks.