У меня есть скрипт Python, который отслеживает процесс и его подпроцессы для использования ЦП и памяти процессом.
Сценарий постоянно проверяет, является ли процесс или один из его подпроцессов Active
. Когда процесс и все его подпроцессы переходят в состояние Inactive
, скрипт Python завершает работу.
Итак, проблема, с которой я сталкиваюсь здесь для конкретного процесса, заключается в следующем:
- Процесс начинается
- Процесс создает подпроцесс-1
- Процесс создает подпроцесс-2
- Процесс создает подпроцесс-3 (в последний момент
Active
) - Завершить подпроцесс-3 (На данный момент процесс и все его подпроцессы имеют статус
Inactive
) - Процесс создает подпроцесс-4 (в последний момент
Active
)
Итак, если мой скрипт проверяет, является ли процесс или один из подпроцессов Active
в [5], он возвращает false и завершается!
Вкратце: существует короткий промежуток времени, когда процесс и все его подпроцессы находятся в состоянии Inactive
(т. е. время между уничтожением подпроцесса и появлением нового подпроцесса). Если мой скрипт проверяет статус в этот момент времени, он возвращает false, потому что все неактивно.
Может ли кто-нибудь предоставить мне какое-либо решение или решить эту проблему?
while(bIsProcessActive == True):
bIsProcessActive = False
if (proc.is_running() and proc.status != psutil.STATUS_ZOMBIE):
bIsProcessActive = True
cpu_usage = proc.get_cpu_percent(interval = 2)
memory_usage = proc.get_memory_info().rss
for child in proc.get_children():
if child.is_running() and child.status != psutil.STATUS_ZOMBIE:
// Add to memory and CPU usage of parent process
if bIsProcessActive == False and childutilization[0] == True:
bIsProcessActive = True
supervisord
, systemd, upstart, runit реализованы - person jfs   schedule 12.06.2015