Hi Stephen,
Yes, this errors out for me.
What it looks like is that the deallocation routine is being deferred.
HDF5 keeps a global state of files, and the order in which the
variable is dereferences, the file objects are closed, and the new
file is assigned is conflicting. In short, what I *think* is going
on, but which I may be wrong about:
h5py.File("whatever") is being evaluated.
Subsequently, it is assigned to variable 'f'
Then, as a result of this, the *old* variable 'f''s reference count
drops to zero. This calls the deallocation routine.
However, at this point, the file has been re-opened by a different variable.
This is all fixed if you use a different variable name for the second opening:
import h5py
f = h5py.File('test.h5')
f.close()
f2 = h5py.File('test.h5')
print f2['Grid00000001']['particle_position_x'][:]
f2.close()
If the variable goes out of scope, the same thing should work.
Additionally, the second 'del f' on line 881 of halo_objects should
not be necessary for this fix. Can you see if it is?
Perhaps more descriptive variable names (something I too am guilty of,
all too often) would obviate the need for all the del's.
-Matt
On Mon, Apr 11, 2011 at 10:22 PM, Stephen Skory wrote:
Hi all,
I'll report it upstream if I can replicate it in a simple script. I'll also give 1.2.1 a shot, which is also available. I'll let you know.
After some testing, 1.2.1 does not fix the error. I've also found that a simple script like this will make the error:
import h5py f = h5py.File('data0090.cpu0000') f.close() f = h5py.File('data0090.cpu0000') print f['Grid00000001']['particle_position_x'][:] f.close()
Can someone try this on some data to see if they get the error too? Thanks!
-- Stephen Skory s@skory.us http://stephenskory.com/ 510.621.3687 (google voice) _______________________________________________ Yt-dev mailing list Yt-dev@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org