mirror of
https://github.com/python/cpython.git
synced 2026-07-24 02:46:51 -04:00
2dd5d4e1ec
gh-150579: use lazy imports for concurrent.futures (GH-150585)
This module has a manual lazy import hack using `__getattr__`. Now that lazy imports exist and cannot be disabled, this could use lazy imports instead.
Key differences: this will now show up in sys.lazy_modules when accessed. Error messages should be a bit better without the wrapper `__getattr__` involved. That's the only differences I can think of.
(cherry picked from commit 423ae0ff36)
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
# Copyright 2009 Brian Quinlan. All Rights Reserved.
|
|
# Licensed to PSF under a Contributor Agreement.
|
|
|
|
"""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)
|
|
|
|
lazy from .process import ProcessPoolExecutor
|
|
lazy from .thread import ThreadPoolExecutor
|
|
|
|
__all__ = [
|
|
'FIRST_COMPLETED',
|
|
'FIRST_EXCEPTION',
|
|
'ALL_COMPLETED',
|
|
'CancelledError',
|
|
'TimeoutError',
|
|
'InvalidStateError',
|
|
'BrokenExecutor',
|
|
'Future',
|
|
'Executor',
|
|
'wait',
|
|
'as_completed',
|
|
'ProcessPoolExecutor',
|
|
'ThreadPoolExecutor',
|
|
]
|
|
|
|
|
|
try:
|
|
import _interpreters
|
|
except ImportError:
|
|
_interpreters = None
|
|
|
|
if _interpreters:
|
|
lazy from .interpreter import InterpreterPoolExecutor # noqa: F401
|
|
__all__.append('InterpreterPoolExecutor')
|
|
|
|
|
|
def __dir__():
|
|
return __all__ + ['__author__', '__doc__']
|