Описание
У меня есть сценарий python, который охватывает некоторые процессы с использованием os.popen(command)
. После запуска всех процессов он будет контролировать (каждые 3 секунды) процессы, используя метод psutil.process_iter()
. Иногда он показывает дополнительный процесс (дубликаты) с тем же именем процесса (команда). Но когда я отлаживаю с помощью watch -n 1 ps -ef | grep command
, дубликатов нет.
Подробности среды:
CentOS 7 и python 3.7
Код
import psutil
def monitor_process(process_map):
processes = psutil.process_iter()
current_process_map = {}
print("current_process_map::"+str(current_process_map))
print("process_map::"+str(process_map))
for process in processes:
process_cmd_line = process.cmdline()
current_process_map[process_cmd_line[1]] = current_process_map.get(process_cmd_line[1],0)+1
for k,v in process_map:
if v != current_process_map[k]:
return False #spawned process and current process count mismatch
return True
Проблема
Приведенный выше код возвращает false (current_process_map> process_map) первоначально (примерно в течение 30 секунд), после чего он работает должным образом (current_process_map == process_map). Это проблема с библиотекой python или centos (linux)?.