tuberías en shell a través del módulo de subproceso Python

Así que estoy tratando de consultar los 3 procesos "intensivos" de CPU en una máquina determinada, y encontré este comando de shell para hacerlo:ps -eo pcpu,pid,user,args | sort -k 1 -r | head -3

Quiero usar estos datos dentro de un script de Python, así que necesito poder capturar la salida del comando anterior a través desubprocess módulo. Lo siguiente funciona, pero solo devuelve una cadena enorme ya que no la estoy restringiendo a los 3 principales:

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

No estoy muy seguro de cómo estosubprocess.check_output Funciona .. en un exiguo intento intenté:

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

Lo que me da un error:ps: illegal argument: |

¿Cómo uso la tubería?| símbolo dentro de Python, o use alguna otra forma de hacer la clasificación sin tener que hacer una cantidad increíble de análisis en la enorme cadena devuelta porpsResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])?

¡Gracias! Saludos, -kstruct

Respuestas a la pregunta(4)

Su respuesta a la pregunta