import psutil proc = psutil.Popen(args, bufsize=-1, executable=None, \ stdin=None, stdout=None, stderr=None, \ preexec_fn=None, close_fds=True, shell=False, \ cwd=None, env=None, universal_newlines=None, \ startupinfo=None, creationflags=0, restore_signals=True, \ start_new_session=False, pass_fds=(), *, \ encoding=None, errors=None, text=None)
args
- список или строка, запускаемая программа с аргументами,bufsize=-1
- буферизация,executable=None
- замещающая программа для выполнения,stdin=None
- поток данных, отправляемых в процесс,stdout=None
- поток вывода программы,stderr=None
- поток ошибок программы,preexec_fn=None
- пользовательская функция, выполняемая до запуска программы,close_fds=True
- управляет файловыми дескрипторами,shell=False
- True
, если программа и ее аргументы представлены как одна строка,cwd=None
- путь к рабочему каталогу запускаемой программы,env=None
- переменные среды для нового процесса,universal_newlines=None
- тоже, что и параметр text
,startupinfo=None
- объект subprocess.STARTUPINFO
,creationflags=None
- один или несколько констант Windows,restore_signals=True
- сигналы восстанавливаются до SIG_DFL
,start_new_session=False
- управляет системным вызов setsid()
,pass_fds=()
- последовательность файловых дескрипторов,encoding=None
- кодировка, если text=True
,errors=None
- обработчик ошибок кодировки,text=None
- текстовый режим для stdin
, stdout
и stderr
.subprocess.Popen
и psutil.Process
.Класс Popen()
модуля psutil
представляет собой то же, что и класс стандартной библиотеки Python subprocess.Popen()
, НО ДОПОЛНИТЕЛЬНО, предоставляет все методы psutil.Process
в одном классе.
Для следующих методов (общих для обоих классов) реализация модуля psutil
имеет приоритет: Process.send_signal()
, Process.terminate()
, Process.kill()
.
Это сделано для того, чтобы избежать уничтожения другого процесса в случае повторного использования его PID
.
Доступность: Linux, Windows, FreeBSD
psutil.Popen()
.>>> import psutil >>> from subprocess import PIPE >>> p = psutil.Popen(["/usr/bin/python3", "-c", "print('hello')"], stdout=PIPE) >>> p.name() # 'python3' >>> p.username() # 'user' >>> p.communicate() # (b'hello\n', None) >>> p.wait(timeout=2) # 0