# subprocess

Модуль **subprocess** позволяет создавать новые процессы, подключаться к их каналам ввода / вывода / ошибок и получать их коды возврата. Этот модуль предназначен для замены нескольких старых модулей и функций:

* os.system
* os.spawn\*

Информацию о том, как можно использовать модуль **subprocess** для замены этих модулей и функций, можно найти в следующих разделах.

{% hint style="info" %}
Смотрите также:

[PEP 324](https://www.python.org/dev/peps/pep-0324/) - предложение по развитию Python, предложение модуля subprocess
{% endhint %}

### Использование модуля subprocess

Рекомендуемый подход к вызову субпроцессов - использовать функцию run () для всех возможных вариантов использования. Для более сложных случаев использования можно напрямую использовать базовый интерфейс [Popen](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/subprocess.popen).

Функция run () была добавлена в Python 3.5; если вам нужно сохранить совместимость со старыми версиями, см. раздел Older high-level API.

* run ()
* CompletedProcess class
* DEVNULL
* [PIPE](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/subprocess.pipe) - специальное значение для аргументов stdin, stdout, stderr класса Popen
* STDOUT
* SubprocessError exception
* TimeoutExpired exception
* CalledProcessError exception

#### Часто используемые аргументы

не заполнено...

#### Конструктор Popen

Создание базового процесса и управление им в этом модуле осуществляется классом **Popen**. Он предлагает большую гибкость, поэтому разработчики могут обрабатывать менее распространенные случаи, не охватываемые вспомогательными функциями.

* [Popen](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/subprocess.popen) class - выполняет дочернюю программу в новом процессе

#### Исключения

не заполнено...

#### Вопросы безопасности

не заполнено...

#### Объекты Popen

Экземпляры класса [**Popen**](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/subprocess.popen) имеют следующие методы:

* poll ()
* [wait ()](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/popen.wait) - ожидает пока дочерний процесс завершится
* [communicate ()](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/popen.communicate) - взаимодействие с процессом
* send\_signal ()
* terminate ()
* kill ()
* [args](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/popen.args) - переданный в Popen аргумент ***args***
* [stdin](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/popen.stdin) - записываемый объект потока, если аргумент `stdin = PIPE`
* [stdout](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/popen.stdout) - считываемый объект потока, если аргумент `stdout = PIPE`
* [stderr](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/popen.stderr) - считываемый объект потока, если аргумент `stderr = PIPE`
* [pid](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/popen.pid) - идентификатор ID дочернего процесса
* [returncode](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/popen.returncode) - код завершения дочернего процесса

#### Помощники Popen в Windows

* STARTUPINFO class

#### Константы Windows

Модуль **subprocess** предоставляет следующие константы:

* STD\_INPUT\_HANDLE
* не заполнено...

#### Старый высокоуровневый API

До Python 3.5 эти три функции составляли высокоуровневый API для сопроцессов. Теперь вы можете использовать run () во многих случаях, но многие из существующих кодов вызывают эти функции.

* [call ()](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess/subprocess.call) - запускает команду, переданную в *args*
* check\_call ()
* check\_output ()

#### Замена старых функций модуля subprocess

не заполнено...

#### Устаревшие функции вызова оболочки

Этот модуль также предоставляет следующие унаследованные функции из модуля команд Python 2.x. Эти операции неявно вызывают системную оболочку, и ни одна из описанных выше гарантий безопасности и согласованности обработки исключений не действует для этих функций.

* getstatusoutput ()
* getoutput ()

#### Примечания

не заполнено...


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/parallelnoe-vypolnenie/subprocess.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
