我目前正在集群上运行一段 Python 代码。slurm 对我实施的部分规则是我的代码的挂钟运行时间有时间限制。大多数时候这并不是一个真正的问题,因为我可以简单地使用 pickle 检查我的代码,然后重新启动它。
然而,在代码的最后,我需要写出我的所有数据(在所有计算完成之前我不能写),这可能需要一些时间,因为可以收集非常大的数据。
我现在的问题是,在某些情况下,代码会被 slurm 终止,因为它超出了运行时间限制。
有没有办法中断写操作,停止代码,然后从我离开的地方重新开始?
假设您将数据放在列表或元组中。也许是生成器功能?
#Create generator function
def Generator():
data=['line1','line2','line3','line4']:
for i in data:
yield i
output=Generator() #reference it
.......
......
if [time conditions is true]:
file-open("myfile","a")
file.write(str(next(output))
else:
[Do something]
您还可以使用尝试捕获异常并重新启动您的主要功能
try:
MainFunction() #main function with generator next calls
except [you error Error]:
MainFunction() #restart main function