在Zigbee python模块中查找函数的时间

时间:2016-05-04 12:26:27

标签: python function zigbee timeit

我一直在尝试查找以下函数的时序,该函数用于查找连接在我的串行端口上的ZigBee模块的地址。但是当我试图使用timeit.Timer()方法找到时间时。它没有回复执行所需的时间。

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()

当我执行程序时,它给出了以下错误:

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

我无法理解错误。有谁知道这个问题?我的代码在没有Timer.timeit()的情况下完美运行。

1 个答案:

答案 0 :(得分:0)

您需要将函数作为字符串传递给Timer()。在当前语法中,它执行self_add_tx()并将结果传递给Timer()以供执行。

请尝试使用以下语法:

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