シリアル接続からの入力を記録しています。
現時点では、入力が更新によって実行される基本クラスを使用しています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)
input は int に変換される文字列です。最近シリアル接続をジェネレーターとして使い始めたばかりなので、いくつかの矛盾があります。
次に、最小値と最大値を使用して、バイナリ データを読み取るためのレーザーの強度を計算します。