Python psutil показать результат procname? - PullRequest
0 голосов
/ 08 мая 2018

Если я использую procname и затем запускаю psutil в качестве команды оболочки, я вижу изменение в имени процесса. Однако, если я использую модуль python psutil, изменения не отображаются. (См. Код ниже).

Из http://psutil.readthedocs.io/en/latest/#processes следует, что процессы каким-то образом кэшируются. В нем также говорится, что они кэшируются при первом вызове, и в этом случае приведенный ниже код должен работать, а? Если проблема заключается в предварительном кешировании, есть ли способ сказать psutil обновить свой кеш?

Я знаю, что могу захватить выходные данные из системного вызова os.sys и проанализировать их по имени процесса, созданного вручную, но я надеялся, что смогу воспользоваться преимуществами psutil.

import procname
import psutil
import os

procname.setprocname('xyzzzyzyz')

os.system('ps aux | grep xyzzzyzyz')
c = 0
X = psutil.process_iter(attrs=['name'])
for x in X:
    c+=1
    if x.name() in [ 'xyzzzyzyz', 'python']:
        print x
print c

for proc in psutil.process_iter():
     try:
         pinfo = proc.as_dict(attrs=['pid', 'name', 'username'])
     except psutil.NoSuchProcess:
         pass
     else:
         if pinfo['name'] in ['xyzzzyzyz', 'python']:
             print pinfo

1 Ответ

0 голосов
/ 10 мая 2018

Автор psutil здесь. Нет, в настоящее время нет способа обновить Process() экземпляры. Кажется, что должно быть, так как ваш вариант использования действительно законен. Я добавлю Process.refresh() метод для аннулирования кэша.

...