2012-02-07 4 views
1

여러 개의 코드를 벤치 마크하는 python 스크립트를 작성하려고합니다. 문제는 스크립트가 명령 ID의 출력을 실행할 때와 다른 것입니다.이 명령은 bash 프롬프트에서 직접 실행합니다. 여기 python 스크립트에서 time 명령의 출력 처리

다음은 배쉬 프롬프트에서 time myapp를 실행하면 bash's time command를 사용하는

real  1.0 
    user  0.8 
    sys   0.0 
+0

를? –

+0

글쎄, 하나는 이것에 대한 간단한 테스트가 아니었고별로 정확하지 않아서 파이썬보다는 오히려 C++ 프로그램을 찾고 있었다. 하지만 그건 하나의 옵션입니다. –

답변

2

위의 코드의 OUPUT 인 파이썬 스크립트

import subprocess 
import re 
import os 
app = os.getcwd() + "/" + "myapp" 
testPopen = subprocess.Popen(args=['/usr/bin/time',app], 
    stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell=False) 
testPopen.wait() 

코드입니다. (help time을 입력하면 bash가 bash 명령으로 인식하는 것을 볼 수 있습니다.)

파이썬 스크립트를 실행하면 different program/usr/bin/time이 사용됩니다. (그 시간을 볼 수있는 유형 man time 또는 which time 또한 프로그램이 얼마나 혼란.!)

bash는 시간 명령을 사용하는 파이썬 스크립트를 얻으려면 : 당신이`timeit`를 사용하지 않는 이유는

import shlex 
testPopen = subprocess.Popen(shlex.split('bash -c "time {a}"'.format(a = app)), 
    stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell=False) 
out,err = testPopen.communicate() 
print(err) 
관련 문제