iPython, выполняющий параллельные вычисления, застрял с результатами в странном состоянии
Я делаю несколько параллельных вычислений, оценивая правильность подбора по многим регрессиям. При этом (при выполнении ~60К вычислений) мне каким-то образом удалось вывести iPython в странное состояние.
Выталкивание объектов во все узлы
%%px
model_analytics = ResultsAnalytics(rows, store['data_model'])
И отправка работы:
%%time
ar = lview.map(lambda x: model_analytics.generate_prediction_heuristic(x), rows.index)
Работает отлично. Фактически, большая часть работы выполнена:
%%time
completed = ar.progress
print completed
print "Remaining {0} min".format((ar.elapsed/completed) * (len(rows) - completed)/60)
66229
Осталось 0.0205939930854 мин
Время процессора: пользователь 211 мс, sys: 163 мс, всего: 374 мс
Время стены: 364 мс
Но есть одна работа, которая не завершена!
for i, status in enumerate(ar.status):
if status != 'ok': print i, status
35230 нет
msg = ar.msg_ids[35230]
lview.abort(msg)
print lview.get_result(msg)
print lview.wait(jobs=msg, timeout=5)
<AsyncResult: unknown>
Ложь
Редактировать: я надеялся, что смогу получить все результаты, кроме несуществующего, но без радости.
msgs = ar.msg_ids[0:35230]
res1 = [lview.get_result(msg) for msg in msgs]
print res1[0:10]
[<AsyncResult: unknown>, <AsyncResult: unknown>, <AsyncResult: unknown>, <AsyncResult: unknown>, <AsyncResult: unknown>, <AsyncResult: unknown>, <AsyncResult: unknown>, <AsyncResult: unknown>, <AsyncResult: unknown>, <AsyncResult: unknown>]
Я еще не пытался воспроизвести это. Что может вызвать эту ошибку? Сделал что-то не так? Есть ли более изящный способ оправиться от этого в будущем?
Версии:
- IPython: 3.2.1
- pyzmq: 14.7.0
- zeromq: dpkg -l | grep libzmq дает:
ii libzmq-dev: amd64 2.2.0 + ядро облегченного обмена сообщениями amd64 dfsg-5 (файлы для разработки) ii libzmq1: amd64 2.2.0 + облегченное ядро обмена сообщениями amd64 dfsg-5 (общая библиотека)