本文整理匯總了Python中multiprocessing.get_all_start_methods方法的典型用法代碼示例。如果您正苦於以下問題:Python multiprocessing.get_all_start_methods方法的具體用法?Python multiprocessing.get_all_start_methods怎麽用?Python multiprocessing.get_all_start_methods使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類multiprocessing
的用法示例。
在下文中一共展示了multiprocessing.get_all_start_methods方法的13個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: test_subproc_start_method
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def test_subproc_start_method():
start_methods = [None]
# Only test thread-safe methods. Others may deadlock tests! (gh/428)
safe_methods = {'forkserver', 'spawn'}
available_methods = multiprocessing.get_all_start_methods()
start_methods += list(safe_methods.intersection(available_methods))
space = gym.spaces.Discrete(2)
def obs_assert(obs):
return check_vecenv_obs(obs, space)
for start_method in start_methods:
vec_env_class = functools.partial(SubprocVecEnv, start_method=start_method)
check_vecenv_spaces(vec_env_class, space, obs_assert)
with pytest.raises(ValueError, match="cannot find context for 'illegal_method'"):
vec_env_class = functools.partial(SubprocVecEnv, start_method='illegal_method')
check_vecenv_spaces(vec_env_class, space, obs_assert)
示例2: _validate_config_dependencies
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def _validate_config_dependencies(self):
"""
Validate that config values aren't invalid given other config values
or system-level limitations and requirements.
"""
if (
self.get("core", "executor") not in ('DebugExecutor', 'SequentialExecutor') and
"sqlite" in self.get('core', 'sql_alchemy_conn')):
raise AirflowConfigException(
"error: cannot use sqlite with the {}".format(
self.get('core', 'executor')))
if self.has_option('core', 'mp_start_method'):
mp_start_method = self.get('core', 'mp_start_method')
start_method_options = multiprocessing.get_all_start_methods()
if mp_start_method not in start_method_options:
raise AirflowConfigException(
"mp_start_method should not be " + mp_start_method +
". Possible values are " + ", ".join(start_method_options))
示例3: process_images_in_process_pool
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def process_images_in_process_pool(images_to_check, number_of_cpus, model):
if number_of_cpus == -1:
processes = None
else:
processes = number_of_cpus
# macOS will crash due to a bug in libdispatch if you don't use 'forkserver'
context = multiprocessing
if "forkserver" in multiprocessing.get_all_start_methods():
context = multiprocessing.get_context("forkserver")
pool = context.Pool(processes=processes)
function_parameters = zip(
images_to_check,
itertools.repeat(model),
)
pool.starmap(test_image, function_parameters)
示例4: process_images_in_process_pool
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def process_images_in_process_pool(images_to_check, known_names, known_face_encodings, number_of_cpus, tolerance, show_distance):
if number_of_cpus == -1:
processes = None
else:
processes = number_of_cpus
# macOS will crash due to a bug in libdispatch if you don't use 'forkserver'
context = multiprocessing
if "forkserver" in multiprocessing.get_all_start_methods():
context = multiprocessing.get_context("forkserver")
pool = context.Pool(processes=processes)
function_parameters = zip(
images_to_check,
itertools.repeat(known_names),
itertools.repeat(known_face_encodings),
itertools.repeat(tolerance),
itertools.repeat(show_distance)
)
pool.starmap(test_image, function_parameters)
示例5: __init__
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def __init__(self, env_fns, start_method=None):
self.waiting = False
self.closed = False
n_envs = len(env_fns)
if start_method is None:
# Fork is not a thread safe method (see issue #217)
# but is more user friendly (does not require to wrap the code in
# a `if __name__ == "__main__":`)
forkserver_available = 'forkserver' in multiprocessing.get_all_start_methods()
start_method = 'forkserver' if forkserver_available else 'spawn'
ctx = multiprocessing.get_context(start_method)
self.remotes, self.work_remotes = zip(*[ctx.Pipe(duplex=True) for _ in range(n_envs)])
self.processes = []
for work_remote, remote, env_fn in zip(self.work_remotes, self.remotes, env_fns):
args = (work_remote, remote, CloudpickleWrapper(env_fn))
# daemon=True: if the main process crashes, we should not cause things to hang
process = ctx.Process(target=_worker, args=args, daemon=True) # pytype:disable=attribute-error
process.start()
self.processes.append(process)
work_remote.close()
self.remotes[0].send(('get_spaces', None))
observation_space, action_space = self.remotes[0].recv()
VecEnv.__init__(self, len(env_fns), observation_space, action_space)
示例6: try_multiprocessing_code
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def try_multiprocessing_code(
self, code, expected_out, the_module, concurrency="multiprocessing"
):
"""Run code using multiprocessing, it should produce `expected_out`."""
self.make_file("multi.py", code)
self.make_file(".coveragerc", """\
[run]
concurrency = %s
source = .
""" % concurrency)
if env.PYVERSION >= (3, 4):
start_methods = ['fork', 'spawn']
else:
start_methods = ['']
for start_method in start_methods:
if start_method and start_method not in multiprocessing.get_all_start_methods():
continue
out = self.run_command("coverage run multi.py %s" % (start_method,))
expected_cant_trace = cant_trace_msg(concurrency, the_module)
if expected_cant_trace is not None:
self.assertEqual(out, expected_cant_trace)
else:
self.assertEqual(out.rstrip(), expected_out)
out = self.run_command("coverage combine")
self.assertEqual(out, "")
out = self.run_command("coverage report -m")
last_line = self.squeezed_lines(out)[-1]
self.assertRegex(last_line, r"multi.py \d+ 0 100%")
示例7: try_multiprocessing_code_with_branching
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def try_multiprocessing_code_with_branching(self, code, expected_out):
"""Run code using multiprocessing, it should produce `expected_out`."""
self.make_file("multi.py", code)
self.make_file("multi.rc", """\
[run]
concurrency = multiprocessing
branch = True
""")
if env.PYVERSION >= (3, 4):
start_methods = ['fork', 'spawn']
else:
start_methods = ['']
for start_method in start_methods:
if start_method and start_method not in multiprocessing.get_all_start_methods():
continue
out = self.run_command("coverage run --rcfile=multi.rc multi.py %s" % (start_method,))
self.assertEqual(out.rstrip(), expected_out)
out = self.run_command("coverage combine")
self.assertEqual(out, "")
out = self.run_command("coverage report -m")
last_line = self.squeezed_lines(out)[-1]
self.assertRegex(last_line, r"multi.py \d+ 0 \d+ 0 100%")
示例8: test_get_all
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def test_get_all(self):
methods = multiprocessing.get_all_start_methods()
if sys.platform == 'win32':
self.assertEqual(methods, ['spawn'])
else:
self.assertTrue(methods == ['fork', 'spawn'] or
methods == ['fork', 'spawn', 'forkserver'])
#
# Check that killing process does not leak named semaphores
#
示例9: get_process_pool_executor
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def get_process_pool_executor(
prefer_fork: bool = False,
max_workers: Optional[int] = None,
initializer: Optional[Callable] = None,
initargs: Tuple[Any, ...] = ()
) -> ProcessPoolExecutor:
if prefer_fork and 'fork' in get_all_start_methods():
ctx: Union[context.DefaultContext, context.ForkContext] = get_context('fork')
else:
monkey_patch_multiprocessing()
ctx = get_context()
try:
return ProcessPoolExecutor(max_workers=max_workers, initializer=initializer, initargs=initargs, mp_context=ctx)
except TypeError:
return ProcessPoolExecutor(max_workers=max_workers, initializer=initializer, initargs=initargs)
示例10: try_multiprocessing_code
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def try_multiprocessing_code(
self, code, expected_out, the_module, nprocs, concurrency="multiprocessing", args=""
):
"""Run code using multiprocessing, it should produce `expected_out`."""
self.make_file("multi.py", code)
self.make_file(".coveragerc", """\
[run]
concurrency = %s
source = .
""" % concurrency)
if env.PYVERSION >= (3, 4):
start_methods = ['fork', 'spawn']
else:
start_methods = ['']
for start_method in start_methods:
if start_method and start_method not in multiprocessing.get_all_start_methods():
continue
remove_files(".coverage", ".coverage.*")
cmd = "coverage run {args} multi.py {start_method}".format(
args=args, start_method=start_method,
)
out = self.run_command(cmd)
expected_cant_trace = cant_trace_msg(concurrency, the_module)
if expected_cant_trace is not None:
self.assertEqual(out, expected_cant_trace)
else:
self.assertEqual(out.rstrip(), expected_out)
self.assertEqual(len(glob.glob(".coverage.*")), nprocs + 1)
out = self.run_command("coverage combine")
self.assertEqual(out, "")
out = self.run_command("coverage report -m")
last_line = self.squeezed_lines(out)[-1]
self.assertRegex(last_line, r"multi.py \d+ 0 100%")
示例11: try_multiprocessing_code_with_branching
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def try_multiprocessing_code_with_branching(self, code, expected_out):
"""Run code using multiprocessing, it should produce `expected_out`."""
self.make_file("multi.py", code)
self.make_file("multi.rc", """\
[run]
concurrency = multiprocessing
branch = True
omit = */site-packages/*
""")
if env.PYVERSION >= (3, 4):
start_methods = ['fork', 'spawn']
else:
start_methods = ['']
for start_method in start_methods:
if start_method and start_method not in multiprocessing.get_all_start_methods():
continue
out = self.run_command("coverage run --rcfile=multi.rc multi.py %s" % (start_method,))
self.assertEqual(out.rstrip(), expected_out)
out = self.run_command("coverage combine")
self.assertEqual(out, "")
out = self.run_command("coverage report -m")
last_line = self.squeezed_lines(out)[-1]
self.assertRegex(last_line, r"multi.py \d+ 0 \d+ 0 100%")
示例12: test_get_all
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def test_get_all(self):
methods = multiprocessing.get_all_start_methods()
if sys.platform == 'win32':
self.assertEqual(methods, ['spawn'])
else:
self.assertTrue(methods == ['fork', 'spawn'] or
methods == ['fork', 'spawn', 'forkserver'])
示例13: get_multiproc_context
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import get_all_start_methods [as 別名]
def get_multiproc_context(capabilities):
best_concurrency = capabilities.get('Process Startup Method', 'fork')
if hasattr(multiprocessing, 'get_context'):
for each in (best_concurrency, 'fork', 'spawn'):
if hasattr(multiprocessing, 'get_all_start_methods'):
if each in multiprocessing.get_all_start_methods():
return multiprocessing.get_context(each)
else:
try:
return multiprocessing.get_context(each)
except ValueError:
pass # invalid concurrency for this system
return None