简介
-
JupyterNotebook 是一个款以网页为基础的交互计算环境,可以创建Jupyter的文档,支持多种语言,包括Python, Julia, R等等。一般来说,如果是使用R语言的话,使用Rstudio居多,使用Python的话,使用Jupyter居多。
JupyterNotebook VS JupyterLab
-
JupyterLab在Jupyter Notebook的基础上进行了改进和扩展,可以认为JupyterLab是下一代的Notebook产品。
-
JupyterLab提供了更现代化和灵活的用户界面,具有更好的可扩展性和集成性。与Jupyter Notebook不同,JupyterLab采用了标签页式的界面布局,允许用户在一个窗口中同时打开多个笔记本、编辑器和终端等组件。这种多面板的设计使得用户可以更方便地组织和管理工作空间,同时提供了更好的多任务处理能力。
通用问题
关闭浏览器后,Jupyter还会继续运行程序吗
-
会运行程序,但是控制台输出不更新了,详情可以参考这个文档:
-
jupyter notebook 如何在关闭浏览器后后台执行并保存结果?
深度学习一个cell要执行很久,想要执行的时候关掉浏览器
作者:YAOJ
链接:https://www.zhihu.com/question/308665219/answer/1699640781
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
先说一下后台执行的问题。后台跑上 jupyter notebook 的话,会自动打开浏览器,但关掉浏览器的话进程不会结束,已经在运行的 notebook 和里面的 cell 还会继续运行。毕竟很多时候在没有屏幕的服务器上我们都是用无浏览器的模式跑 jupyter notebook 的。
# 无浏览器模式,想要打开 notebook 就直接在浏览器里输入 localhost:8888 就可以了
$ jupyter notebook --no-browser
比如一不小心关掉了浏览器,想要重新在浏览器里打开 notebook 的话,就在浏览器里打开 localhost:8888
就好了(8888
是 jupyter notebook 的默认端口)。
当然如果这样打开之前还在运行的 notebook 的话,就看不到里面正在运行的 cell 打印的最新的结果了,所以我们需要保存结果。
可以考虑用 python 的 logging,可以把你想要打印的都写在一个日志文件里,这样你关掉浏览器也没关系了。
代码的话比如这样:
import logging
import sys
import datetimedef init_logger(filename, logger_name):'''@brief:initialize logger that redirect info to a file just in case we lost connection to the notebook@params:filename: to which file should we log all the infologger_name: an alias to the logger'''# get current timestamptimestamp = datetime.datetime.utcnow().strftime('%Y%m%d_%H-%M-%S')logging.basicConfig(level=logging.INFO, format='[%(asctime)s] %(name)s {%(filename)s:%(lineno)d} %(levelname)s - %(message)s',handlers=[logging.FileHandler(filename=filename),logging.StreamHandler(sys.stdout)])# Testlogger = logging.getLogger(logger_name)logger.info('### Init. Logger {} ###'.format(logger_name))return logger# Initialize
my_logger = init_logger("./ml_notebook.log", "ml_logger")
这样就可以在每一次训练结束的时候,把训练结果用 http://my_logger.info(“...”)打印到当前路径下的 ml_notebook.log 的文件里了,每一行还会标好这一行打印的时间,也就是上面 logging.basicConfig 里 format 定义的格式。当然你也可以自己定义自己习惯的格式。
配合 jupyter notebook 的 magic command,还可以把每个 cell 运行的时间记录并且打印到日志文件里。比如在第一个 cell 里:
%%capture out
%%timeit
a = 1+1
然后在下一个 cell 里:
my_logger.info("capture & timeit: "+out.stdout)
就能知道上一个 cell 运行了多久了。
更多 logging 的用法可以参考官方文档[1]。
参考
- ^Python - logging logging — Logging facility for Python — Python 3.12.1 documentation
编辑于