2016-05-04 17 views
1

Ich habe versucht, das Timing der folgenden Funktion zu finden, die verwendet wird, um die Adresse für das ZigBee Modul zu finden, das an meiner seriellen Schnittstelle angeschlossen ist. Aber als ich versuchte, das Timing mit timeit.Timer() Methode zu finden. Es reagiert nicht auf die für die Ausführung erforderliche Zeit.Finde das Timing der Funktion in Zigbee Python Modul

from xbee import ZigBee 
from timeit import TImer 
import serial 

def ByteToHex(bytestring): 
    return ''.join(["%02X" % ord(x) for x in bytestring]).strip() 

def self_add_tx(): 
    s = serial.Serial('COM12', 9600) 
    xb = ZigBee(s) 
    xb.send('at', 
      command='SH')      
    self_frame_h = xb.wait_read_frame() 
    self_addh = self_frame_h['parameter'] 

    xb.send('at', 
      command='SL')      
    self_frame_l = xb.wait_read_frame() 
    s.close() 
    self_addl = self_frame_l['parameter'] 
    self_add = self_addh + self_addl    
    return ByteToHex(self_add) 

print Timer(self_add_tx()).timeit() 

Wenn ich das Programm ausführen, wird es mir geben Fehler folgende:

Traceback (most recent call last): 
    File "I:/HUB/Python_learning/gateway_url_pi/gateway_url_pi_865_mhz/test3.py", line 24, in <module> 
    print Timer(self_add_tx()).timeit() 
    File "C:\Python27\lib\timeit.py", line 129, in __init__ 
    compile(setup + '\n' + stmt, dummy_src_name, "exec") 
    File "<timeit-src>", line 2 
    0013A20040EA6DEC 
       ^
SyntaxError: invalid syntax 

Ich bin nicht in der Lage, den Fehler umderstand. Kennt jemand dieses Problem? Mein Code funktioniert perfekt ohne diese Timer.timeit().

Antwort

0

Sie müssen die Funktion als Zeichenfolge an Timer() übergeben. In Ihrer aktuellen Syntax führt es self_add_tx() aus und übergibt das Ergebnis zur Ausführung an Timer().

diese Syntax Versuchen Sie stattdessen:

print Timer('self_add_tx()').timeit() 
+0

Danke für die Antwort. Aber es gibt mir immer noch nicht die Zeit für die Ausführung. Es zeigt den 'Traceback (zuletzt letzter Aufruf): Datei" I: /HUB/Python_learning/gateway_url_pi/gateway_url_pi_865_mhz/test3.py ", Zeile 24, in print Timer ('self_add_tx()'). Timeit() Datei "C: \ Python27 \ lib \ timeit.py", Leitung 201, in timeit Timing = self.inner (it, self.timer) File "", Zeile 6, in inneren Nameerror: global name ' self_add_tx 'ist nicht definiert' – abhi1610