我使用ipyparallel的地图函数进行了非常耗时(> 3天)的模拟,就像在Jupyter Notebook中那样
from ipyparallel import Client
rc = Client()
lview = rc.load_balanced_view()
ar = lview.map(runsimulation, parameter)
我真的需要那些结果。但不幸的是,由于记忆饥饿,单个实例死亡。现在我再也无法使用ar [i]访问结果了。是否有机会恢复所有其他最肯定计算的结果(我可以在集群的Ganglia监视器中看到特征内存和CPU时间消耗)。
我仍然在Jupyter笔记本中拥有对象ar。
答案 0 :(得分:1)
您可以获得单个msg_ids的部分结果。使用map,每条消息对应一个地图块(列表):
import ipyparallel as ipp
results = []
for msg_id in ar.msg_ids:
chunk_ar = rc.get_result(msg_id)
try:
chunk = chunk_ar.get()
except ipp.RemoteError as e:
print('ignoring error: %s' % e)
results.extend(chunk)
答案 1 :(得分:0)
对我来说,minrk给出的答案不起作用,因为get_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
,这样我得到一个相等长度的列表作为输入。