In [1]:
import tables as tb
import numpy as np
with tb.openFile("huge_tb", "w") as f:
    # The call below seems to allocate the full array
    # in memory (2 GB).
    a = f.createArray('/', 'test', atom=tb.Int16Atom(),
                      shape=(1000,1000,1000))

In [4]:
import h5py
import numpy as np
with h5py.File("huge_h5py", "w") as f:
    a = f.create_dataset('/test', dtype=np.int16, 
                         shape=(10000,1000,1000))
    a[0,...] = 0