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 подскажет развёрнутый ответ в реальном времени.