Как выполнить команду bash time not / usr / bin / time через модуль подпроцесса?

#python #subprocess

#python #подпроцесс

Вопрос:

Я пытаюсь создать небольшой скрипт для проведения некоторого сравнительного анализа для меня. Я использую subprocess.Popen для выполнения команды time. Пример кода:

 import subprocess
import shlex

command = shlex.split("time thing_im_benchmarking")
p = subprocess.Popen(command)
p.wait()
  

Результат, который я получаю, это

2.58пользователь 0.04system 0:02.83 прошло 92%CPU (0avgtext 0avgdata 11568maxresident)k 0inputs 0outputs (0major 791 minor)pagefaults 0swaps

Чего я действительно хотел, так это

 real    0m3.048s
user    0m2.784s
sys 0m0.040s
  

Как мне заставить Popen выполнить встроенную команду bash?

Ответ №1:

Передайте shell=True в subprocess.Popen()

Ответ №2:

Я знаю, что это немного поздно, но способ получить стандартизированный вывод для временной программы — использовать флаг -p . Это даст вам вывод времени в соответствии со стандартом POSIX 2. Это мне очень помогло, когда я попытался оценить свои тайминги, используя программу, автоматически собирающую их.