Я запускаю внешний скрипт, используя subprocess.run(...)
с внешним исполняемым файлом, о котором я очень мало знаю.
Я окружил вызов run()
парой временных вызовов:
import subprocess
import time
t1_start = time.perf_counter()
t2_start = time.process_time()
cmdout = subprocess.run(['executable', '-arg', 'val'], capture_output=True)
t1_end = time.perf_counter()
t2_end = time.process_time()
print('real time: %f' %(t1_end-t1_start))
print('user time: %f' %(t2_end-t2_start))
executable
- это сторонний коммерчески чувствительный двоичный код, которым я не могу поделиться.
Когда я запускаю это, я получаю что-то вроде
$ python my_script.py
real time: 7.9063631325456365
user time: 1.0106746650250822
но когда я вызываю скрипт python с time
:
$ time python my_script.py
real time: 7.9063631325456365
user time: 1.0106746650250822
real 0m3.078s
user 0m1.464s
sys 0m0.359s
, я не понимаю, почему существует так много расхождений между результатом perf_counter()
и real
временем, которое возвращает unix.
Как я понял, time.process()
- это время процесса (это общее время ЦП, т. Е. user
+ sys
?), И time.perf_counter()
должно (?) Быть приблизительно эквивалентным real
- но мои результаты могут показаться, что это не так?