| | |
| | |
| |
|
| | """Execute computations asynchronously using threads or processes.""" |
| |
|
| | __author__ = 'Brian Quinlan (brian@sweetapp.com)' |
| |
|
| | from concurrent.futures._base import (FIRST_COMPLETED, |
| | FIRST_EXCEPTION, |
| | ALL_COMPLETED, |
| | CancelledError, |
| | TimeoutError, |
| | InvalidStateError, |
| | BrokenExecutor, |
| | Future, |
| | Executor, |
| | wait, |
| | as_completed) |
| |
|
| | __all__ = ( |
| | 'FIRST_COMPLETED', |
| | 'FIRST_EXCEPTION', |
| | 'ALL_COMPLETED', |
| | 'CancelledError', |
| | 'TimeoutError', |
| | 'BrokenExecutor', |
| | 'Future', |
| | 'Executor', |
| | 'wait', |
| | 'as_completed', |
| | 'ProcessPoolExecutor', |
| | 'ThreadPoolExecutor', |
| | ) |
| |
|
| |
|
| | def __dir__(): |
| | return __all__ + ('__author__', '__doc__') |
| |
|
| |
|
| | def __getattr__(name): |
| | global ProcessPoolExecutor, ThreadPoolExecutor |
| |
|
| | if name == 'ProcessPoolExecutor': |
| | from .process import ProcessPoolExecutor as pe |
| | ProcessPoolExecutor = pe |
| | return pe |
| |
|
| | if name == 'ThreadPoolExecutor': |
| | from .thread import ThreadPoolExecutor as te |
| | ThreadPoolExecutor = te |
| | return te |
| |
|
| | raise AttributeError(f"module {__name__} has no attribute {name}") |
| |
|