# Do this before:
# salloc --reservation=tomo4 --x11 --time=12:00:00 --mem=128G --cores-per-socket 16 -c 64 --gres=gpu:1 srun --pty bash -l
# module load tomotools/training_2024
from silx.io import h5py_utils
with h5py_utils.File("test2.h5", "w"):
pass
with h5py_utils.File("test1.h5", "w"):
with h5py_utils.File("test2.h5", "r"): # this will fail
pass
Traceback (most recent call last):
File "/home/esrf/denolf/tomo_training/test.py", line 8, in <module>
with h5py_utils.File("test2.h5", "r"):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/cvmfs/tomo.esrf.fr/software/packages/linux/ppc64le/tomotools/2024_02_28/lib/python3.11/site-packages/silx/io/h5py_utils.py", line 397, in __init__
self._LOCKING_MGR.set_locking(locking)
File "/cvmfs/tomo.esrf.fr/software/packages/linux/ppc64le/tomotools/2024_02_28/lib/python3.11/site-packages/silx/io/h5py_utils.py", line 275, in set_locking
self._check_locking_env(locking)
File "/cvmfs/tomo.esrf.fr/software/packages/linux/ppc64le/tomotools/2024_02_28/lib/python3.11/site-packages/silx/io/h5py_utils.py", line 310, in _check_locking_env
raise RuntimeError(
RuntimeError: Close all HDF5 files before disabling HDF5 file locking__
p9-03:~/tomo_training % python -c "import h5py;print(h5py.version.version, h5py.version.hdf5_version)"
3.10.0 1.10.4
if h5py.version.hdf5_version_tuple[:2] == (1, 10):
HDF5_HAS_LOCKING_ARGUMENT = HDF5_HEX_VERSION >= calc_hexversion(1, 10, 7)
else:
HDF5_HAS_LOCKING_ARGUMENT = HDF5_HEX_VERSION >= calc_hexversion(1, 12, 1)
H5PY_HAS_LOCKING_ARGUMENT = H5PY_HEX_VERSION >= calc_hexversion(3, 5, 0)
HAS_LOCKING_ARGUMENT = HDF5_HAS_LOCKING_ARGUMENT & H5PY_HAS_LOCKING_ARGUMENT
(pybox_o1cpia) denolf@ideapad3:~$ python -c "import h5py;print(h5py.version.version, h5py.version.hdf5_version)"
3.10.0 1.14.2