2014-10-28 81 views
26

我想知道是否有辦法重啓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://stackoverflow.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

回答

-3

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

8

即使這將是方便的,如果%reset將清除的命名空間和進口高速緩存(如筆記本電腦),可以明確地重新加載在python3使用importlib.reload先前導入模塊.4或imp.reload在python3.0-3.3中(如果需要在第二步重置內核)。

1

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

3

我可以重新啓動的內核,但有些控制檯會話需要更長的時間來重新連接。 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

0

IPython Qt-console具有重置內核功能。如果你使用IPython Qt,你可以使用它。國際海事組織它比從殼使用更好。

enter image description here