JupyterNotebook VS JupyterLab 如果jupyter安装成功,点击jupyterlab即可进入lab环境

JupyterNotebook VS JupyterLab 如果jupyter安装成功,点击jupyterlab即可进入lab环境_第1张图片

JupyterNotebook VS JupyterLab 如果jupyter安装成功,点击jupyterlab即可进入lab环境_第2张图片

简介

  • 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 datetime

def 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 info
        logger_name: an alias to the logger
    '''

    # get current timestamp
    timestamp = 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)
        ]
    )

    # Test
    logger = 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]。

参考

  1. ^Python - logging logging — Logging facility for Python — Python 3.12.1 documentation

编辑于

你可能感兴趣的:(jupyter)