データ取得システムから収集されたデータをメモリ内の場所に書き込んでから、データに対して非同期でさらに処理を実行するか、オフライン処理のためにファイルに書き出そうとしています。このアーキテクチャをこのようにして、データの取得をデータの分析と転送から分離し、将来の拡張と改善のための柔軟性を確保しようとしていますが、単純にデータを直接ファイルに書き込むよりも明らかに複雑です。
ここに私が書いたいくつかの探索的コードがあります。
#io.BufferedRWPair test
from io import BufferedRWPair
# Samples of instrumentation data to be stored in RAM
test0 = {'Wed Aug 1 16:48:51 2012': ['20.0000', '0.0000', '13.5', '75.62', '8190',
'1640', '240', '-13', '79.40']}
test1 = {'Wed Aug 1 17:06:48 2012': ['20.0000', '0.0000', '13.5', '75.62', '8190',
'1640', '240', '-13', '79.40']}
# Attempt to create a RAM-resident object into which to read the data.
data = BufferedRWPair(' ', ' ', buffer_size=1024)
data.write(test0)
data.write(test1)
print data.getvalue()
data.close()
ここにはいくつかの問題があります (おそらくもっと!):
-> 'data' は、私が組み立てようとしている構造 (Python の外部) をピックアップする変数名です。これは、配列のような構造であり、各レコードにはいくつかのプロセス データ測定値が含まれている連続したレコードを保持する必要があります。検索のキーとして使用できるタイムスタンプによって。コードが曖昧すぎて本当の質問を反映できない場合に備えて、これを設計意図の背景として提供しました。
-> 「データ」オブジェクトが作成されていないため、このコードは機能しません。後で埋めるために空のバッファを開こうとしていますが、Python は 2 つのオブジェクトを探しています。1 つは読み取り可能、もう 1 つは書き込み可能で、コードには存在しません。このため、正しい構成を使用しているかどうかさえわかりません。これにより、次のような疑問が生じます。
io.BufferedRWPair は、このデータを処理する最良の方法ですか? 私はPython 2.7.2を使用しているので、StringIOを試しましたが、うまくいきませんでした。タイムスタンプキーを持つレコードのアイデアが好きなので、dict 構造を選択しましたが、代替案を検討したいと思います。代わりに見るべき他のioクラスはありますか?
私が調べた代替案の 1 つは、NumPy/SciPy/Pandas の世界で定義されている DataFrame コンストラクトです。面白そうですが、追加のモジュールがたくさん必要なように見えるので、私はそれを避けてきました。私はこれらのモジュールの経験がありません - 必要なものを得るために、これらのより複雑なモジュールを検討する必要がありますか?
皆さん、提案やフィードバックを歓迎します...この質問をチェックしてくれてありがとう!