シリアル接続からの入力を記録しています。変数の効率的な更新
瞬間、私は入力がself.min & self.max
の更新を介して実行される基本的なクラスを使用しているしかし、おそらくこれを行うには、より効率的な方法はありますか?
おそらく両端キュー?これには効率のメリットがありますか? おそらくクラスは必要ありませんか?
私が使用している1の例:
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に変換される文字列です。私は最近、シリアル接続をジェネレータとして使用し始めたので、いくつかの相違があります。
次に、minとmaxを使用して、バイナリデータを読み取るためのlazerの強度を計算します。
入力の形式と目的を説明します。また、あなたはこれまでのことを私たちに見せてもらえますか? –
@PlatinumAzure - どのようなアイデアですか? – beoliver