私はPythonスレッドにつま先を浸しています。キューを介して*nix(シリアル)/devから文字/行データを返すサプライヤースレッドを作成しました。
演習として、キューからのデータを一度に1行ずつ消費したいと思います(行末記号として「\ n」を使用)。
私の現在の(単純な)解決策は、一度に1文字だけをキューに入れることです。そのため、コンシューマーは一度に1文字だけを取得します。(これは安全な仮定ですか?)このアプローチにより、現在、次のことが可能になります。
...
return_buffer = []
while True:
rcv_data = queue.get(block=True)
return_buffer.append(rcv_data)
if rcv_data == "\n":
return return_buffer
これは機能しているようですが、一度に2文字をput()すると、間違いなく失敗する可能性があります。
受信ロジックをより汎用的にし、複数文字のput()を処理できるようにしたいと思います。
次のアプローチは、rcv_data.partition( "\ n")を使用して、 "remainder"をさらに別のバッファー/リストに配置することですが、これには、キューと一緒に一時バッファーを調整する必要があります。(別のアプローチは、一度に1行だけput()することだと思いますが、その面白さはどこにありますか?)
キューから一度に1行ずつ読み取るためのよりエレガントな方法はありますか?