我正在记录来自串行连接的输入。
目前,我一直在使用输入通过更新运行的基本类self.min & self.max
但也许有更有效的方法来做到这一点?
也许是双端队列?这会带来效率效益吗?也许不需要上课?
我用过的一个例子:
class RangeFinder(object):
def __init__(self, _mem=3) :
self._mem = deque(maxlen=_mem)
self.absmax = -10**10
self.absmin = 10**10
self.relmax = None
self.relmin = None
def read(self, _data) :
if _data != None:
self._mem.append(_data)
if len(self._mem) == self._mem.maxlen :
self.relmax = max(self._mem)
self.absmax = max(self.absmax, self.relmax)
self.relmin = min(self._mem)
self.absmin = min(self.absmin, self.relmin)
另一个想法:
class MinMax(deque):
def __init__(self):
deque.__init__(self, [ 10**10, -10**10 ], maxlen=2)
def read(self, _data):
if _data < self[0]:
self.popleft()
self.appendleft(_data)
if _data > self[1]:
self.pop()
self.append(_data)
输入是一个转换为 int 的字符串。我最近才开始使用串行连接作为生成器,因此存在一些差异。
然后使用最小值和最大值来计算用于读取二进制数据的激光强度。