diff options
-rw-r--r-- | Lib/multiprocessing/util.py | 30 | ||||
-rw-r--r-- | Lib/subprocess.py | 31 | ||||
-rw-r--r-- | Lib/test/support.py | 3 | ||||
-rwxr-xr-x | Tools/scripts/run_tests.py | 6 |
4 files changed, 38 insertions, 32 deletions
diff --git a/Lib/multiprocessing/util.py b/Lib/multiprocessing/util.py index 7c71081..cbb01c9 100644 --- a/Lib/multiprocessing/util.py +++ b/Lib/multiprocessing/util.py @@ -14,6 +14,7 @@ import weakref import atexit import threading # we want threading to install it's # cleanup function before multiprocessing does +from subprocess import _args_from_interpreter_flags from multiprocessing.process import current_process, active_children @@ -297,32 +298,3 @@ class ForkAwareLocal(threading.local): def __reduce__(self): return type(self), () -# -# Get options for python to produce the same sys.flags -# - -def _args_from_interpreter_flags(): - """Return a list of command-line arguments reproducing the current - settings in sys.flags and sys.warnoptions.""" - flag_opt_map = { - 'debug': 'd', - # 'inspect': 'i', - # 'interactive': 'i', - 'optimize': 'O', - 'dont_write_bytecode': 'B', - 'no_user_site': 's', - 'no_site': 'S', - 'ignore_environment': 'E', - 'verbose': 'v', - 'bytes_warning': 'b', - 'quiet': 'q', - 'hash_randomization': 'R', - } - args = [] - for flag, opt in flag_opt_map.items(): - v = getattr(sys.flags, flag) - if v > 0: - args.append('-' + opt * v) - for opt in sys.warnoptions: - args.append('-W' + opt) - return args diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 410ae29..1539891 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -475,6 +475,37 @@ def _eintr_retry_call(func, *args): continue +# XXX This function is only used by multiprocessing and the test suite, +# but it's here so that it can be imported when Python is compiled without +# threads. + +def _args_from_interpreter_flags(): + """Return a list of command-line arguments reproducing the current + settings in sys.flags and sys.warnoptions.""" + flag_opt_map = { + 'debug': 'd', + # 'inspect': 'i', + # 'interactive': 'i', + 'optimize': 'O', + 'dont_write_bytecode': 'B', + 'no_user_site': 's', + 'no_site': 'S', + 'ignore_environment': 'E', + 'verbose': 'v', + 'bytes_warning': 'b', + 'quiet': 'q', + 'hash_randomization': 'R', + } + args = [] + for flag, opt in flag_opt_map.items(): + v = getattr(sys.flags, flag) + if v > 0: + args.append('-' + opt * v) + for opt in sys.warnoptions: + args.append('-W' + opt) + return args + + def call(*popenargs, timeout=None, **kwargs): """Run command with arguments. Wait for command to complete or timeout, then return the returncode attribute. diff --git a/Lib/test/support.py b/Lib/test/support.py index 5259e27..e43dbad 100644 --- a/Lib/test/support.py +++ b/Lib/test/support.py @@ -1596,8 +1596,7 @@ def strip_python_stderr(stderr): def args_from_interpreter_flags(): """Return a list of command-line arguments reproducing the current settings in sys.flags and sys.warnoptions.""" - from multiprocessing.util import _args_from_interpreter_flags - return _args_from_interpreter_flags() + return subprocess._args_from_interpreter_flags() #============================================================ # Support for assertions about logging. diff --git a/Tools/scripts/run_tests.py b/Tools/scripts/run_tests.py index f750e19..e2a2050 100755 --- a/Tools/scripts/run_tests.py +++ b/Tools/scripts/run_tests.py @@ -10,6 +10,10 @@ simply passing a -u option to this script. import os import sys import test.support +try: + import threading +except ImportError: + threading = None def is_multiprocess_flag(arg): @@ -34,7 +38,7 @@ def main(regrtest_args): ]) if sys.platform == 'win32': args.append('-n') # Silence alerts under Windows - if not any(is_multiprocess_flag(arg) for arg in regrtest_args): + if threading and not any(is_multiprocess_flag(arg) for arg in regrtest_args): args.extend(['-j', '0']) # Use all CPU cores if not any(is_resource_use_flag(arg) for arg in regrtest_args): args.extend(['-u', 'all,-largefile,-audio,-gui']) |