tubulação no shell via módulo de subprocesso Python

Então, estou tentando consultar os 3 principais processos "intensivos" de CPU em uma determinada máquina, e encontrei este comando shell para fazer isso:ps -eo pcpu,pid,user,args | sort -k 1 -r | head -3

Eu quero usar esses dados dentro de um script Python, então eu preciso ser capaz de capturar a saída do comando acima através dosubprocess módulo. O seguinte funciona, mas apenas retorna uma string enorme, já que não estou restringindo-a ao top 3:

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

Eu não tenho certeza de como issosubprocess.check_output funciona .. em uma tentativa escassa eu tentei:

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

O que me dá um erro:ps: illegal argument: |

Como eu uso o tubo?| símbolo dentro do Python, ou use alguma outra maneira de fazer a ordenação sem ter que fazer uma quantidade incrível de análise na grande corda retornada porpsResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])?

Obrigado! Atenciosamente, -struct

questionAnswers(4)

yourAnswerToTheQuestion