12、 IPython&Jupyter Notebook 的快捷键、Magic 命令以及远程服务器的调用

来源:互联网 发布:电脑自动还原软件 编辑:程序博客网 时间:2024/06/10 04:02

一、ipython 基础

1. 搜索并重用历史命令

  • 直接使用上下键进行查找(效率比较低)
  • 输入命令的前几个字符+上下键查找,这样就会搜索出历史命令中第一个与你输入的字符相匹配的命令了(更高效)
  • Ctrl+C: 终止当前正在执行的代码
  • Ctrl+L: 清屏

2. ?和 ?? 查看对象的信息

这里写图片描述

3. line magic(%) && cell magic(%%)

  • %开头的叫做line magic, 这种类型的指令只能作用于一行代码,默认是可以不带百分号使用的。
  • %%开头的叫做cell magic, 这种类型的指令只能作用于代码块
    这里写图片描述

4. 与系统命令的交互(!)

  • ipython中可以很方便的使用linux命令,只需要在命令前加上一个就可以了
  • eg: !vim hello.txt // 在ipython 中调用 vim 命令(只适用于linux 系统中),Windows 下得用 !type hello.txt

二、Jupyter Notebook 中的快捷键

  • 编辑模式和命令模式的切换
    • 要进入编辑模式,按 Enter
    • 要从编辑模式返回到命令模式,按 Escape
  • 创建一个新的单元格
    • 命令模式A 在当前单元格上方创建一个单元格
    • 命令模式B 在当前单元格下方创建一个单元格
  • 选择并合并多个单元格
    • 命令模式Shift + J or Shift + Down 往下选择单元格
    • 命令模式`Shift + M 合并下一个单元格或者多个选中的单元格
  • 删除单元格
    • 命令模式下,连续按两次 D 可以删除单元格
  • 执行单元格
    • Shift + Enter 执行此单元格中的代码,同时跳转到下一单元格
  • 显示代码行号
    • 命令模式下,按 L 显示代码行号
  • 代码补全及函数或类等的使用方法
    • 编辑模式下,使用 Tab 键进行代码补全
    • 编辑模式下,使用Shift + Tab 键来查看函数或类等的使用方法的概要,连续按两次Shift + Tab 键显示全部文档,或者使用 ? + 方法/变量等
  • 命令模式下, 按 H 调出 Jupyter Notebook 快捷方式列表 ;Jupyter 在顶部菜单提供了一个快捷键列表:Help > Keyboard Shortcuts
    这里写图片描述

三、Jupyter Notebook 中的 Magic 命令

  • 代码计时
    • %timeit:测算某行代码的运行时间
    • %%timeit:测算整个单元格的运行时间
  • 在 notebook 中嵌入图表
    • 在单元格开头加入代码:%matplotlib inline
  • 运行 Python 代码
    • 使用 %run test.py 运行python代码
  • 在 notebook 中进行调试
    • 对于 Python 内核,可以使用 Magic 命令 %pdb 开启交互式调试器
    • 出错时,你能检查当前命名空间中的变量
  • 运行 Shell 命令
    • 在一般的 shell 命令前面加一个感叹号 !即可以在 Notebook 中轻松使用 linux 命令啦

四、Jupyter Notebook 调用远程服务器

  • 安装 linux_anaconda2-4.3.1,:高版本的可能需要安装nb_conda,才能在浏览器中使用(conda root) conda install nb_conda
  • 在自己的 home 目录下运行jupyter notebook --generate-config,创建一个配置目录~/.jupyter,里面有配置文件jupyter_notebook_config.py
  • 打开 ipython 创建登陆密码
In [1]: from notebook.auth import passwdIn [2]: passwd()Enter password:Verify password:Out[2]: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
  • 取消jupyter_notebook_config.py前面的注释,并按照下面的编辑
c.NotebookApp.open_brower = False  # 不需要在服务器上打开浏览器c.NotebookApp.ip = '*'  # Set ip to '*' to bind on all interfaces (ips) for the public serverc.NotebookApp.password = u'your hashed password here'  # 设置登陆密码# It is a good idea to set a known, fixed port for server access# 注意:端口号不是任意设的,它要和路由器中的内部端口号相同# 在本地浏览器中使用对外ip:对外服务端口(和内部端口号对应)来访问c.NotebookApp.port = 9999
  • 在shell中运行Jupyter notebook,使用nohup,这样即使你登出系统了,Jupyter notebook还是会持续运行,代码为:nohup jupyter notebook
  • 通过在终端中按两次 Ctrl + C,可以关闭整个服务器
  • 关于服务端口的设置(要在路由器中设置,不是随便选的!)

    • 先给出我们实验室的路由配置(IP 什么的已经更改过了,以防泄露哈)
      这里写图片描述

    • 假如我在jupyter notebook 中把端口号设置成了第四条中内部端口的 8801(对应外部的服务端口也是8801),那么我在本地浏览器输入10.30.100.160:8801就可以远程访问服务器了,第一次登陆(可在移动端)需要输入密码
      这里写图片描述

    • 当然你也可以在jupyter_notebook_config.py 中修改端口号,只需要在路由器中添加转发规则就可以了。不过,低数字端口比如22、80 等,只能在 root 用户下使用,所以你最好把端口号设高一点,比如 8803
  • 优点及效果展示
    • 再也不用担心 ubuntu server 版不能可视化了,本地 jupyter notebook 中可以显示图像(我的理解是:它读取了远程服务器中图片的内存数据,然后调用了本地图形显示的后台来显示图像)
    • 在 jupyter notebook 中可以很方便的修改程序、实时监控程序的运行,交互式调试等等
      这里写图片描述

五、参考资料

1. 28 Jupyter Notebook tips, tricks and shortcuts
2. Built-in magic commands
3. Running a notebook server
4. The five-minute guide to setting up a Jupyter notebook server
5. 五分钟建立Jupyter notebook服务器

原创粉丝点击