Если я использую 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