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

在Zigbee python模块中查找函数的计时,python,function,zigbee,timeit,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 s

我一直在尝试查找以下函数的计时,该函数用于查找我串行端口上连接的
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
回溯(最近一次呼叫最后一次):
文件“I:/HUB/Python\u learning/gateway\u url\u pi/gateway\u url\u pi\u 865\u mhz/test3.py”,第24行,在
打印计时器(self_add_tx()).timeit()
文件“C:\Python27\lib\timeit.py”,第129行,在\uuu init中__
编译(setup+'\n'+stmt,dummy\u src\u name,“exec”)
文件“”,第2行
0013A20040EA6DEC
^
SyntaxError:无效语法

我无法理解这个错误。有人知道这个问题吗?我的代码在没有这个
计时器的情况下可以正常工作。timeit()

您需要将函数作为字符串传递给
Timer()
。在当前语法中,它执行
self\u add\u tx()
,并将结果传递给
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()
请尝试以下语法:

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

您需要将函数作为字符串传递给
Timer()
。在当前语法中,它执行
self\u add\u tx()
,并将结果传递给
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()
请尝试以下语法:

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

谢谢你的回答。但它仍然没有给我执行死刑所需的时间。它显示了
回溯(最近一次调用):文件“I:/HUB/Python\u learning/gateway\u url\u pi/gateway\u url\u pi\u 865\u mhz/test3.py”,第24行,在打印计时器('self\u add\u tx()')。timeit()文件“C:\Python27\lib\timeit.py”,第201行,在timeit timeit timing=self.inner(It,self.Timer)文件“,第6行,内部名称错误:未定义全局名称“self\u add\u tx”
谢谢您的回答。但它仍然没有给我执行死刑所需的时间。它显示了
回溯(最近一次调用):文件“I:/HUB/Python\u learning/gateway\u url\u pi/gateway\u url\u pi\u 865\u mhz/test3.py”,第24行,在打印计时器('self\u add\u tx()')。timeit()文件“C:\Python27\lib\timeit.py”,第201行,在timeit timeit timing=self.inner(It,self.Timer)文件“,第6行,内部名称错误:未定义全局名称“self\u add\u tx”