5

h5py でディスク I/O をバイパスするにはどうすればよいですか? 現在、私は次のようなことをしなければなりません:

msg = socket.recv()
fp = open("tmp.hdf5", 'wb')
fp.write(msg)
fp.close()
f = h5py.File('tmp.hdf5', 'r')

... # alter the file

fp = open("tmp.hdf5", 'rb')
msg = fp.read()
msg = f.toString()
socket.send(data)

私はこのようなことをしたい:

msg = socket.recv()
f = h5py.File(msg, driver='core')
... # alter the file
msg = f.toString()
socket.send(msg)

ここでの問題は速度です。ディスク I/O がボトルネックになりすぎます。h5py File オブジェクトの文字列を作成し、その後ファイルを文字列として抽出する簡単で簡単な方法はありますか? それに関しては、Cythonのようなものを喜んで使用します...

4

2 に答える 2

3

h5py は単に hdf5 c ライブラリのラッパーであるため、これは Python では不可能であると確信しています。HDF5 データへのすべてのアクセスは、遅かれ早かれ HDF5 c ライブラリ呼び出しで終了します。

おそらく、OS レベルでこれを解決できます。十分な空き RAM がある場合は、データ ファイルをRAM ドライブに保存できます。Linux では、通常、RAM ドライブはtmpfsを使用して作成されます。

于 2013-02-06T17:18:36.160 に答える