在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”