2017-09-24 43 views

回答

0

這裏是比較函數的兩個實現的執行時間的一般方法,使用timeit模塊:

假設您有兩個模塊,first.pysecond.py,既實現了一個名爲FirstClassifierSecondClassifier類分別實施了一種稱爲classify的方法。還假設他們有一個叫做train的方法,當被調用時讀取一些訓練數據並訓練其模型,並且您想要測量方法的速度。

所以first.py是:

# Fill in imports here. 
import random 

class FirstClassifier(object): 
    def __init__(self): 
     # Fill in initialization code here. 
     pass 

    def train(self): 
     # Fill in code to train model here. 
     pass 

    def classify(self, text): 
     # Fill in classification code here. 
     # Dummy "classification": 
     return random.choice(['sports', 'politics', 'video games']) 

而且second.py是:

# Fill in imports here. 

class SecondClassifier(object): 
    def __init__(self): 
     # Fill in initialization code here. 
     pass 

    def train(self): 
     # Fill in code to train model here. 
     pass 

    def classify(self, text): 
     # Fill in classification code here. 
     # Dummy "classification": 
     return 'sports' 

可以使用時間classify方法的執行timeit像這樣:

python -m timeit -s 'from first import FirstClassifier;classifier = FirstClassifier();classifier.train();' 'classifier.classify("The game ended in a draw.")' 

示例輸出,表示「遊戲以平局結束」的分類。平均需要0.417微秒。

1000000 loops, best of 3: 0.417 usec per loop 

而對於第二個執行:

python -m timeit -s 'from second import SecondClassifier;classifier = SecondClassifier();classifier.train();' 'classifier.classify("The game ended in a draw.")' 

輸出示例,說明該分類「這場比賽以平局收場。」平均需要0.0836微秒。

10000000 loops, best of 3: 0.0836 usec per loop 

這些timeit命令的一般形式是python -m timeit -s 'SETUP_CODE' 'CODE_TO_TIME'。因此,需要執行以準備要測量的函數的代碼將轉至-s選項,並且要定時的主表達式將轉到該命令的第一個非標誌參數。

相關問題