Сообщить об ошибке.

Класс Popen() модуля psutil в Python

Запускает программу и дает управлять ее процессом

Синтаксис:

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.

Возвращаемое значение:

Описание:

Класс 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