Mediumsubprocess

Что такое subprocess?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

subprocess — запуск и контроль внешних процессов. run — основной API (Python 3.5+).

import subprocess

# Запуск с захватом вывода
result = subprocess.run(
    ['ls', '-l'],
    capture_output=True,   # захват stdout/stderr
    text=True,             # str вместо bytes
    check=True,            # CalledProcessError при ненулевом exit
    timeout=30,
    cwd='/tmp',
)
print(result.stdout)      # CompletedProcess(stdout=..., returncode=0)

# Popen — низкоуровневый, для долгоживущих процессов
p = subprocess.Popen(['cat'], stdin=PIPE, stdout=PIPE, text=True)
out, err = p.communicate(input='hello')   # 'hello'
  • shell=TrueОПАСНО (command injection), избегать; для shell-features (pipes, globbing) — через несколько run;
  • shlex.quote(arg) — для safe shell composition;
  • input — str/bytes для stdin;
  • env — dict окружения;

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.