非常に大きなデータセット(1〜10 milレコード、場合によってはそれ以上)をドメイン固有言語(唯一の出力メカニズムはCスタイルのfprintf
ステートメント)からPythonに転送する必要があります。
現在、DSLを使用しfprintf
てレコードをフラットファイルに書き込んでいます。フラットファイルは次のようになります。
x['a',1,2]=1.23456789012345e-01
x['a',1,3]=1.23456789012345e-01
x['a',1,4]=1.23456789012345e-01
y1=1.23456789012345e-01
y2=1.23456789012345e-01
z['a',1,2]=1.23456789012345e-01
z['a',1,3]=1.23456789012345e-01
z['a',1,4]=1.23456789012345e-01
ご覧のとおり、各レコードの構造は非常に単純です(ただし、倍精度浮動小数点数を20文字の文字列として表現するのは非常に非効率的です!):
<variable-length string> + "=" + <double-precision float>
私は現在Pythonを使用して各行を読み取り、「=」で分割しています。
Pythonが読みやすくするために、表現をよりコンパクトにするためにできることはありますか?ある種のバイナリエンコーディングは可能fprintf
ですか?