Python 如果单个计算失败,则从ipyparallel映射恢复值
我使用ipyparallel的map函数运行了一个相当耗时(>3天)的模拟,就像Jupyter笔记本中那样Python 如果单个计算失败,则从ipyparallel映射恢复值,python,jupyter,ipython-parallel,Python,Jupyter,Ipython Parallel,我使用ipyparallel的map函数运行了一个相当耗时(>3天)的模拟,就像Jupyter笔记本中那样 from ipyparallel import Client rc = Client() lview = rc.load_balanced_view() ar = lview.map(runsimulation, parameter) 我真的需要这些结果。但不幸的是,有一个实例因为内存不足而死亡。现在我无法再使用ar[i]访问结果。是否有机会恢复所有其他结果(我可以在集群的Ganglia
from ipyparallel import Client
rc = Client()
lview = rc.load_balanced_view()
ar = lview.map(runsimulation, parameter)
我真的需要这些结果。但不幸的是,有一个实例因为内存不足而死亡。现在我无法再使用ar[i]访问结果。是否有机会恢复所有其他结果(我可以在集群的Ganglia监视器中看到特征内存和cpu时间消耗)
我在Jupyter笔记本中仍然有对象ar。您可以获得单个msg\u ID的部分结果。使用map,每条消息对应于map的一个块(列表):
对我来说,minrk给出的答案不起作用,因为它在
get\u result
上已经失败了
我对它做了一点修改,这对我很有用:
results = []
for msg_id in ar.msg_ids:
try:
chunk_ar = rc.get_result(msg_id)
chunk = chunk_ar.get()
except:
chunk = None
results.append(chunk)
注意,我添加了None
,这样我就得到了一个长度相等的列表作为输入
results = []
for msg_id in ar.msg_ids:
try:
chunk_ar = rc.get_result(msg_id)
chunk = chunk_ar.get()
except:
chunk = None
results.append(chunk)