Python 如果单个计算失败,则从ipyparallel映射恢复值

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

我使用ipyparallel的map函数运行了一个相当耗时(>3天)的模拟,就像Jupyter笔记本中那样

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)