X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=smart_future.py;h=460dcb95862a9a88ecafde45fa8886dbcbb9eaa1;hb=4d03debb5b84b5b3e096add468ecd87c55ed0f5f;hp=604c149520464bcd9d8c5a55cf8905acd5ec34d4;hpb=f2b4fe83f6fc853a68653bd5e3d9fe0648c3d105;p=python_utils.git diff --git a/smart_future.py b/smart_future.py index 604c149..460dcb9 100644 --- a/smart_future.py +++ b/smart_future.py @@ -1,18 +1,20 @@ #!/usr/bin/env python3 from __future__ import annotations + import concurrent import concurrent.futures as fut import logging import traceback -from typing import Callable, List, TypeVar +from typing import Callable, List, Set, TypeVar from overrides import overrides +import id_generator + # This module is commonly used by others in here and should avoid # taking any unnecessary dependencies back on them. from deferred_operand import DeferredOperand -import id_generator logger = logging.getLogger(__name__) @@ -27,11 +29,11 @@ def wait_any( ): real_futures = [] smart_future_by_real_future = {} - completed_futures = set() - for f in futures: - assert type(f) == SmartFuture - real_futures.append(f.wrapped_future) - smart_future_by_real_future[f.wrapped_future] = f + completed_futures: Set[fut.Future] = set() + for x in futures: + assert type(x) == SmartFuture + real_futures.append(x.wrapped_future) + smart_future_by_real_future[x.wrapped_future] = x while len(completed_futures) != len(real_futures): newly_completed_futures = concurrent.futures.as_completed(real_futures) @@ -59,9 +61,9 @@ def wait_all( log_exceptions: bool = True, ) -> None: real_futures = [] - for f in futures: - assert type(f) == SmartFuture - real_futures.append(f.wrapped_future) + for x in futures: + assert type(x) == SmartFuture + real_futures.append(x.wrapped_future) (done, not_done) = concurrent.futures.wait( real_futures, timeout=None, return_when=concurrent.futures.ALL_COMPLETED