아래의 샘플 코드는 모든 실행중인 procces를 검색하여 인쇄합니다. 그들은 세 번째 예제 인 here과 마지막으로 here을 작성했습니다. 문제는 왜 처음 프로세스 만 원하는대로 정렬 된 프로세스를 검색하는지 파악할 수 없다는 것입니다.사전에 따라 목록을 정렬하는 파이썬 람다 함수
기능 구조가 lambda
과 관련이 있다고 생각합니다. 하지만 올바르게 실행되는 샘플은 처음에 p
for 변수의 변수를 p.dict
사전과 섞어서 막히게 만듭니다.
첫번째 샘플 :
import psutil
procs = []
for p in psutil.process_iter():
try:
p.dict = p.as_dict(['pid', 'name'])
except psutil.NoSuchProcess:
pass
else:
procs.append(p)
processes = sorted(procs, key=lambda p: p.dict['name'], reverse=False)
print(processes)
번째 샘플 : 최초 샘플
import psutil
procs = []
for proc in psutil.process_iter():
try:
procs_dic = proc.as_dict(['pid', 'name'])
except psutil.NoSuchProcess:
pass
else:
procs.append(proc)
processes = sorted(procs, key=lambda ordem: procs_dic['name'], reverse=False)
print(processes)
사실,'처리 = 정렬에 끝에서 두 번째 행을 변경 : @JordanMcQueen 팁 다음'(프록 키 = 람다 ORDEM ordem.dict [ '이름', 역방향 = 거짓). 그러나,'proc.dict = proc.as_dict ([ 'pid', 'name'])''try' 다음의 행으로 변경 한 후에 만 작업을 완료 할 수 있습니다. –
오른쪽. 그래서 당신은'proc'와'ordem'에 변수'p'와'proc'의 이름을 바꾸 었다는 것을 제외하고는 첫 번째 스 니펫에서와 똑같은 코드를 가지고 있습니다. –