in src/sagemaker_training/process.py [0:0]
def create(cmd, error_class, processes_per_host, cwd=None, env=None, capture_error=False, **kwargs):
"""Spawn a process with asyncio for the given command.
Args:
cmd (list): The command to be run.
error_class (cls): The class to use when raising an exception.
cwd (str): The location from which to run the command (default: None).
If None, this defaults to the ``code_dir`` of the environment.
env: os.environ
capture_error (bool): Whether or not to direct stderr to a stream
that can later be read (default: False).
**kwargs: Extra arguments that are passed to the asyncio create subprocess constructor.
Returns:
asyncio.subprocess.Process: The asyncio process for the given command.
Raises:
error_class: If there is an exception raised when creating the process.
"""
try:
stderr = PIPE if capture_error else None
rc, output, proc = asyncio.run(
run_async(
cmd,
processes_per_host,
env=env or os.environ,
cwd=cwd or environment.code_dir,
stderr=stderr,
**kwargs,
)
)
return rc, output, proc
except Exception as e: # pylint: disable=broad-except
six.reraise(error_class, error_class(e), sys.exc_info()[2])