重置ipython内核

问题描述:

我想知道是否有办法重启ipython内核而不关闭它,就像笔记本中存在的内核重启功能一样。我试过%reset,但似乎没有清除进口。重置ipython内核

+1

对于我来说,似乎还明确进口(IPython的2.2,MacOSX的): 在文献[1]:%卫生组织 互动命名空间是空的。 In [2]:import os In [3]:%whos 变量类型数据/信息 ------------------------- ----- 在[4]中:%reset 一旦删除,变量就不能被删除,变量不能被删除,变量不能被删除恢复。继续(y/[n])? y In [5]:%whos 交互式命名空间为空。 – bjonen 2014-10-28 10:52:42

+3

是的命名空间被清除,但是当重新导入它似乎读取模块的缓存版本,所以我必须使用像http://*.com/questions/437589/how-do-i-unload-重新加载-A-蟒模块。 – greole 2014-10-28 12:35:58

+1

好的,我明白了。你也可以使用http://ipython.org/ipython-doc/dev/config/extensions/autoreload.html。但我知道这不是你正在寻找的东西。 – bjonen 2014-10-29 08:02:43

https://github.com/jupyter/notebook/blob/f19d68a33193dff07e62f11da0ebce331e8acbda/notebook/services/kernels/handlers.py#L75

class KernelActionHandler(APIHandler): 

    @web.authenticated 
    @json_errors 
    @gen.coroutine 
    def post(self, kernel_id, action): 
     km = self.kernel_manager 
     if action == 'interrupt': 
      km.interrupt_kernel(kernel_id) 
      self.set_status(204) 
     if action == 'restart': 

      try: 
       yield gen.maybe_future(km.restart_kernel(kernel_id)) 
      except Exception as e: 
       self.log.error("Exception restarting kernel", exc_info=True) 
       self.set_status(500) 
      else: 
       model = km.kernel_model(kernel_id) 
       self.write(json.dumps(model)) 
     self.finish() 
+0

呃...为什么downvote? – knite 2016-02-21 05:46:20

+0

我没有downvote,但我想解释一下你想用这段代码说什么,或者你如何使用该代码块来重置导入将是伟大的 – greole 2016-02-22 11:51:37

+0

这取决于很多外部的东西和特定于Web应用程序。 – erickrf 2016-10-07 13:01:08

即使这将是方便的,如果%reset将清除的命名空间和进口高速缓存(如笔记本电脑),可以明确地重新加载在python3使用importlib.reload先前导入模块.4或imp.reload在python3.0-3.3中(如果需要在第二步重置内核)。

在Qt的控制台,您可以打ctrl-

我可以重新启动的内核,但有些控制台会话需要更长的时间来重新连接。 Notebook会立即检测到内核重启。

ipykernel.ipkernel.IPythonKernel类有do_shutdown方法restart参数默认为False

获取对ipykernel.kernelapp.IPKernelApp的引用,其中引用了内核,并通过传递True来调用内核的do_shutdown

import IPython 
app = IPython.Application.instance() 
app.kernel.do_shutdown(True) 

我是如何测试的?

$ #start notebook 
$ jupyter notebook 

$ #connect to existing kernel 
$ jupyter console --existing 
+0

@greole没有我的解决方案为你工作? – 2016-02-26 15:23:02

IPython Qt-console具有重置内核功能。如果你使用IPython Qt,你可以使用它。国际海事组织它比从壳使用更好。

enter image description here