Commit ebdcd859 authored by Antoine Pitrou's avatar Antoine Pitrou

Move private function _args_from_interpreter_flags() to subprocess.py, so

that it can be imported when threads are disabled.
(followup to issue #12098)
parent 77c84f2d
...@@ -14,6 +14,7 @@ import weakref ...@@ -14,6 +14,7 @@ import weakref
import atexit import atexit
import threading # we want threading to install it's import threading # we want threading to install it's
# cleanup function before multiprocessing does # cleanup function before multiprocessing does
from subprocess import _args_from_interpreter_flags
from multiprocessing.process import current_process, active_children from multiprocessing.process import current_process, active_children
...@@ -297,32 +298,3 @@ class ForkAwareLocal(threading.local): ...@@ -297,32 +298,3 @@ class ForkAwareLocal(threading.local):
def __reduce__(self): def __reduce__(self):
return type(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
...@@ -475,6 +475,37 @@ def _eintr_retry_call(func, *args): ...@@ -475,6 +475,37 @@ def _eintr_retry_call(func, *args):
continue 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): def call(*popenargs, timeout=None, **kwargs):
"""Run command with arguments. Wait for command to complete or """Run command with arguments. Wait for command to complete or
timeout, then return the returncode attribute. timeout, then return the returncode attribute.
......
...@@ -1596,8 +1596,7 @@ def strip_python_stderr(stderr): ...@@ -1596,8 +1596,7 @@ def strip_python_stderr(stderr):
def args_from_interpreter_flags(): def args_from_interpreter_flags():
"""Return a list of command-line arguments reproducing the current """Return a list of command-line arguments reproducing the current
settings in sys.flags and sys.warnoptions.""" settings in sys.flags and sys.warnoptions."""
from multiprocessing.util import _args_from_interpreter_flags return subprocess._args_from_interpreter_flags()
return _args_from_interpreter_flags()
#============================================================ #============================================================
# Support for assertions about logging. # Support for assertions about logging.
......
...@@ -10,6 +10,10 @@ simply passing a -u option to this script. ...@@ -10,6 +10,10 @@ simply passing a -u option to this script.
import os import os
import sys import sys
import test.support import test.support
try:
import threading
except ImportError:
threading = None
def is_multiprocess_flag(arg): def is_multiprocess_flag(arg):
...@@ -34,7 +38,7 @@ def main(regrtest_args): ...@@ -34,7 +38,7 @@ def main(regrtest_args):
]) ])
if sys.platform == 'win32': if sys.platform == 'win32':
args.append('-n') # Silence alerts under Windows 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 args.extend(['-j', '0']) # Use all CPU cores
if not any(is_resource_use_flag(arg) for arg in regrtest_args): if not any(is_resource_use_flag(arg) for arg in regrtest_args):
args.extend(['-u', 'all,-largefile,-audio,-gui']) args.extend(['-u', 'all,-largefile,-audio,-gui'])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment