我有12个串行设备连接到我的电脑上,从一个设备上读取一个值需要大约4秒,下面的代码片段总共需要大约1分钟来读取所有值。它们是优化下面的python脚本的一种方法,还是使用其他API的方法,这些API可以减少串行访问设备和读取值的时间
代码段:
if sys.platform.startswith('linux'):
for sfiles in glob.glob('/dev/serial/by-id/usb-XXXXdevNAME*'):
try:
s = serial.Serial(sfiles, 9600, timeout=2)
s.write('XXXdeviceCommandToReadValue XXXX\r\n')
response = s.readlines() // from the profiles it looks readlines is using more time
探查器结果:
^{pr2}$谢谢, 罗希思
如果设备是独立的;您可以同时读取它们的响应:
假设大部分时间都花在I/O上,代码应该会更快地完成。在
另外,研究在这种情况下
s.readlines()
是否是一个正确的API用法(在它之前是否需要s.flush()
)?你应该读一行还是一个固定的字节数。对于普通文件/管道,.readlines()
将读取所有数据,直到EOF。检查它对串行设备是否有意义。在相关问题 更多 >
编程相关推荐