2012-06-09 40 views
1

我想使用Python從編譯的C++ exe中獲取返回值(同時對它們進行計時)。用於從Python測量外部.exe運行時的更精確的計時器?

這是我的Python代碼

import subprocess 
import time 

info = subprocess.STARTUPINFO() 
info.dwFlags |= subprocess.STARTF_USESHOWWINDOW 
info.wShowWindow = subprocess.SW_HIDE 

t1 = time.clock() 
h = subprocess.Popen([r"C:\Users\MyName\Desktop\test.exe"], startupinfo=info) 
h.communicate() 
t2 = time.clock()-t1 

print "Return Code:", h.returncode 
print "Duration:", t2 

這是TEST.CPP的內容:

int main(){  
    return 1234; 
} 

這是Python輸出

Return Code: 1234 

Duration: 0.0438238265388 

我覺得43+毫秒太長而且不準確。有沒有更好的辦法?

+2

考慮多次運行可執行文件,然後除以運行次數? – Amber

+0

使用這種方法,它似乎將壓縮到15毫秒300平均運行...更好,但仍然似乎太慢。我的Python輸出比這更快,我知道Python的加載速度比C++慢 – MyNameIsKhan

+0

有沒有一種方法可以在C++中使用內部clock_t方法,並以某種方式從程序本身獲取時間和返回值? – MyNameIsKhan

回答

0

我也建議測量從C++程序本身的時間,如果你仍然有興趣在Python程序中獲得時間,你可以返回從C++程序計算出來的時間,這應該是非常準確的。也如其他人所建議的那樣,平均進行多次運行。