当管理员终止脚本时保存 hdf5 数据

当管理员终止脚本时保存 hdf5 数据

我有大量蒙特卡罗数据需要在特定集群上处理。我的做法是,对于给定的数据样本(平均大小为 70 GB),我使用 Python 对这些数据运行一些统计脚本,并将其保存到 hdf5 文件中,这样可以将这些数据的整体大小减少 90%。

由于文件太大,我无法采取太多措施来加快程序速度。因此,每个样本运行完毕所需的时间都很长。

为了加快整体处理速度,我运行以下命令

cat sampleList.txt | parallel -j 20 ipython myScript.py 2>&1 | tee logDir/myLog.txt

其中可用核心数为 36。

但最终发生的事情是,随着时间的推移,这 20 个进程中的一定数量会自动终止。我对此并没有什么意见。但是,当其中一个进程被终止时,该进程中写入的 hdf5 文件就会损坏。

我想知道是否可以在我的 Python 脚本中添加一个标志,强制在进程终止之前关闭我写入的数据。或者你们也许有更好的选择。

我该怎么办?谢谢!

答案1

每次写入后关闭文件是否有意义:

while input
  compute
  if received TERM signal: exit
  open >>file.hd5
  write stuff
  close file.hd5

相关内容