Ich verwende h5py
, um iterativ in ein großes Array mit Python zu schreiben. Es dauert ziemlich lange und ich kann beobachten, wie die Datei wächst, wenn der Code läuft.Inhalt der HDF5-Datei verschwindet nach Abschluss des Schreibvorgangs
Leider, wenn mein Python-Programm beendet wird, verschwindet der Dateiinhalt. Die Datei ist nicht beschädigt, aber alle Werte sind 0.0
(der Füllwert, den ich einstelle). Ich habe sichergestellt, dass die Datei f
mit f.close()
geschlossen wird, und nach dem Schließen der Datei (aber vor dem Beenden des Programms) war die Datei noch intakt und Inhalt war da.
Kennt jemand dieses Verhalten und kann erklären, was dort passiert? Ich würde mich über jede Hilfe freuen!
Um Ihnen ein bisschen mehr Informationen zu geben, hier ist, was ich konkret mache. Ich erstellte eine Process
, die Ergebnisse von einem Queue
verarbeitet. Wenn der Prozess initialisiert wird, wird die HDF5-Datei erstellt, und wenn das letzte Element in der Warteschlange erreicht ist, wird die Datei geschlossen. All dies scheint gut zu funktionieren (wie oben beschrieben), aber ich erwähne es, da ich nicht viel Erfahrung mit Prozessen habe und mich frage, ob das Dateihandling in der Prozessklasse das Problem sein könnte.
# results_queue is still empty
result_processor = ResultProcessor(results_queue, file_name)
result_processor.start()
# now the result queue is filled
process_stuff_and_feed_to_result_queue()
# add last queue item so the end can be recognised:
result_queue.put(None)
result_processor.join()
# I checked at this point: The file content is still around!
Das einzige Problem, das ich denken könnte ist, dass die __init__ Methode des Prozesses im Haupt-Thread ausgeführt wird. Vielleicht verschiebe die Öffnung der hdf5-Datei an den Anfang der Run-Methode ?? – Trilarion