orurowanie w powłoce za pomocą modułu podprocesów Pythona

Próbuję więc wyszukać trzy „intensywne” procesy CPU na danej maszynie i znalazłem to polecenie powłoki:ps -eo pcpu,pid,user,args | sort -k 1 -r | head -3

Chcę użyć tych danych w skrypcie Pythona, więc muszę być w stanie przechwycić dane wyjściowe powyższego polecenia przezsubprocess moduł. Poniższe działa, ale zwraca ogromny ciąg, ponieważ nie ograniczam go do pierwszej 3:

psResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])

Nie jestem pewien, jak to jestsubprocess.check_output działa .. w skromnej próbie próbowałem:

subprocess.check_output(['ps', '-eo', 'pcpu,user,args', '|', 'sort', '-k', '1', '-r', '|', 'head', '-3'])

Co daje mi błąd:ps: illegal argument: |

Jak korzystać z rury| symbol w Pythonie lub użyj innego sposobu na sortowanie bez konieczności wykonywania niesamowitych ilości parsowania na wielkim łańcuchu zwróconympsResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])?

Dzięki! Pozdrawiam, -kstruct

questionAnswers(4)

yourAnswerToTheQuestion