如何调试和修复iPython并行';s";内核重启";ipython笔记本上的信息

如何调试和修复iPython并行';s";内核重启";ipython笔记本上的信息,python,ipython,jupyter,ipython-parallel,Python,Ipython,Jupyter,Ipython Parallel,每次我使用iPython parallel(ipyparallel)运行非常耗时的任务时,我都会收到一条弹出消息“内核重启内核似乎已死机。它将自动重启。” 调试这种情况的好方法是什么?我会在我的程序上打印每行代码,可能在完成所有进程之后,完成内核模块并重新启动 i、 例如,在下面的代码中,在执行几次(通常是10次)后,内核在打印“finishparallel”消息之前死亡。然后,在死亡之前,每次都会打印“FinishRun99” 因此,我猜内核在完成所有并行过程后从并行引擎返回时会死亡。但我不

每次我使用
iPython parallel(ipyparallel)
运行非常耗时的任务时,我都会收到一条弹出消息“内核重启内核似乎已死机。它将自动重启。”

调试这种情况的好方法是什么?我会在我的程序上打印每行代码,可能在完成所有进程之后,完成内核模块并重新启动

i、 例如,在下面的代码中,在执行几次(通常是10次)后,内核在打印“finishparallel”消息之前死亡。然后,在死亡之前,每次都会打印“FinishRun99”

因此,我猜内核在完成所有并行过程后从并行引擎返回时会死亡。但我不知道如何调试和修复它

from IPython.parallel import Client
from IPython import parallel
from IPython.parallel import require

def run(x):
    # run process once for x
    ...
    print "finish run %d" % x
    return result

def run_parallel(num):
    print("run_parallel: %d times" % num)
    rc = parallel.Client()
    dview = rc[:]
    try:
        res = dview.map_async(run, range(100))
        wait_watching_stdout() # Real-time output from engines in IPython parallel (http://stackoverflow.com/questions/18086299/real-time-output-from-engines-in-ipython-parallel)
        print ("finish parallel")
        result = res.get()
    finally:
        rc.close()
    return result

all_result = []
for num in range(500):
    r = run_parallel(num)
    all_result.append(r)
我的环境
  • Ubuntu 14.04
  • 蟒蛇2.4.0上的python 2.7.10
  • iPython 4.0.0
  • ipyparallel 5.0.1