Jupyter Notebook 同时显示和捕获输出

2024-01-09

我试图找到一种方法来“保存”jupyter 笔记本中的变量,同时捕获丰富的输出。主要是由于 ssh 断开连接等原因。仅分配给变量是行不通的,因为某些库会打印进度条等信息。

到目前为止,最有希望的方法是使用%%capture然而,在最近的版本中,似乎只捕获输出,而在浏览器会话处于活动状态时不会输出。理想情况下,我正在寻找一种可以同时执行这两种操作的解决方案,如果浏览器会话处于活动状态则打印输出,但如果由于某种原因它被中断,我可以稍后转储捕获的输出。


我们可以创建一个自定义魔法register_cell_magic, 基于capture https://github.com/ipython/ipython/blob/35331a37b2cf29e779d937bffee8606aa2418bc7/IPython/core/magics/execution.py#L1454来自 IPython 的代码,我可以执行这个模拟 Linux 的函数tee命令(因此得名)。我做的唯一一件事就是从类中提取它并调用io事情在最后。

from IPython import get_ipython
from IPython.core import magic_arguments
from IPython.core.magic import register_cell_magic
from IPython.utils.capture import capture_output

@magic_arguments.magic_arguments()
@magic_arguments.argument('output', type=str, default='', nargs='?',
    help="""The name of the variable in which to store output.
    This is a utils.io.CapturedIO object with stdout/err attributes
    for the text of the captured output.
    CapturedOutput also has a show() method for displaying the output,
    and __call__ as well, so you can use that to quickly display the
    output.
    If unspecified, captured output is discarded.
    """
)
@magic_arguments.argument('--no-stderr', action="store_true",
    help="""Don't capture stderr."""
)
@magic_arguments.argument('--no-stdout', action="store_true",
    help="""Don't capture stdout."""
)
@magic_arguments.argument('--no-display', action="store_true",
    help="""Don't capture IPython's rich display."""
)
@register_cell_magic
def tee(line, cell):
    args = magic_arguments.parse_argstring(tee, line)
    out = not args.no_stdout
    err = not args.no_stderr
    disp = not args.no_display
    with capture_output(out, err, disp) as io:
        get_ipython().run_cell(cell)
    if args.output:
        get_ipython().user_ns[args.output] = io
    
    io()

As you can see in the following image, It is working correctly Jupyter notebook screenshot

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jupyter Notebook 同时显示和捕获输出 的相关文章

随机推荐

  • 如何让Mysql数据库支持阿拉伯语?

    我试图将阿拉伯语保存在 mysql 数据库中 但它不以阿拉伯语格式保存 它显示问号而不是阿拉伯语 如何让它用阿拉伯语存储值 我尝试了很多从互联网上看到的查询 但它没有改变 如何将其更改为阿拉伯语 ar SA 阿拉伯语 沙特阿拉伯 请建议一个
  • 如何使用 jQuery 搜索嵌套列表?

    我已经将一个简单的搜索字段放在一起来浏览列表 但我有嵌套列表 并且它仅限于单级列表 如何修改 我把它放在小提琴里 http jsfiddle net marksweb 4CJMe http jsfiddle net marksweb 4CJ
  • 如何将 CakePHP 中的查找限制为特定数量?

    我有一个用户模型 它为我提供最新的用户作为输出 如何限制记录只输出 200 条记录而不是数据库中的所有用户 根据文档 http book cakephp org 2 0 en models retrieving your data html
  • node.js - 如何使用服务工作者缓存handlebars.js

    我想问一下服务人员的情况 我制作了一个网络应用程序并尝试实现服务工作者 我使用 hbs 作为视图布局 当我缓存静态文件时 我无法缓存 hbs css 和 js 文件 这就是我保存文件的方式 public css style css js a
  • 如何从另一个函数返回生成器

    我有一个生成器函数 我想从另一个函数调用它并返回获得的生成器 我在这里可以看到两种方法 请注意 以下函数是简单的虚拟函数 用于说明目的 请不要想出更好的方法来实现这些功能本身 Method 1 def fun a n for i in ra
  • 如何制作热图并使用 NA 值进行聚类?

    我正在尝试使用我的数据制作热图 但很难正确编码 我的矩阵充满了 log x 1 值 这样我就不会遇到 log 0 错误 但是由于数据的性质 我有一堆 0 值 它们掩盖了热图的任何趋势可能正在展示 因此 我想将任何 0 值着色为灰色或黑色 然
  • 所选图像未显示在画布上

    我正在开发一个应用程序 用户可以从提供的图像列表中选择图像 当用户单击列表中的图像时 所选图像应作为背景显示在画布上 我正在使用reactjs redux 和fabricjs 开发它 当我这样做时 我没有得到选定的图像 this props
  • 从 Firebase 数据库异步方法返回值

    我想检查 Firebase 中是否已有具有所选用户名的用户并且我已经创建了一个函数checkUsernameAlreadyTaken username String gt Bool做这个的 这是该函数的代码 func checkUserna
  • 参数超过256字节的CUDA内核调用思路

    我有几个结构 它们的总大小超过了允许在内核调用中作为参数传递的 256 字节大小 这两个结构都已分配并复制到设备全局内存 1 如何在同一个内核中使用这些结构而不将其作为参数传递 更多细节 这些结构可以单独作为参数传递 例如 在不同的内核中
  • 从命令行查看表格文件,例如 CSV [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 help on topic 如果您认为该问题与主题相关另一个 St
  • 异常:oauth 状态丢失或无效。 (ASP.NET Core 外部标识符 OAuth)

    我正在尝试在 Asp Net Core 中实现外部 OAuth https github com aspnet contrib AspNet Security OAuth Providers https github com aspnet
  • 在 iframe 中加载另一个域网站

    我想使用 iframe 在我的网站上加载另一个网站 我在其他一些网站中使用 iframe 加载时遇到了一些其他问题 那么我们不能实现iframe来加载其他域网站页面吗 如果是这样 我们是否有其他方法来加载网站 以下是我测试的方法 我已经尝试
  • 从 Azure DevOps 获取已通过 JavaScript 合并到分支中的所有工作项

    The idea 我目前正在使用 NodeJS 开发一个 发行说明 应用程序 该应用程序调用各种 Azure DevOps REST API 端点来获取基于特定标签的工作项 我现在拥有的 我现在所拥有的工作原理如下 SomeAzure De
  • 将 Github 存储库移植到另一种语言

    我想将别人的存储库移植到另一种语言 就我而言 SCSS gt Stylus 但它很可能是Javascript gt Coffeescript 解决这个问题的最佳方法是什么 我是不是该 分叉存储库并编辑文件 而不是拉取请求 在这里 我只会分叉
  • 在引导程序中,如何使图像成为下拉菜单?

    在引导程序中 如何使图像成为下拉菜单 您好 我在引导程序中创建了一个下拉列表 我想放置一个图像 使其成为单击的项目以查看下拉列表 下面是我的代码
  • C++ 模板和内联

    当我编写一个简单 非模板 类时 如果函数实现 就地 提供 它会自动被视为inline class A void InlinedFunction int a 0 the same as inline void InlinedFunction
  • 输入(...)提示后显示%?

    假设我们使用的是 python3 3 和多平台 Linux 和 WIndow 如果我执行以下操作 gt gt gt eval input enter a percent from 1 100 I get enter a percent fr
  • 在 MongoDB 中查询相似数组

    我想在 MongoDB 集合中搜索具有相似数组的文档 并按相似值排序 Example 我会寻找 chars a b c 我已经存储了这些文件 1 chars s e c 2 chars i l d 3 chars b a c 4 chars
  • 如何断言 C# 异步方法在单元测试中引发异常? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用 NUnit 测试异步方法 最终使用另一个框架 https stackoverflow com questions 12191831 how do i test an async method
  • Jupyter Notebook 同时显示和捕获输出

    我试图找到一种方法来 保存 jupyter 笔记本中的变量 同时捕获丰富的输出 主要是由于 ssh 断开连接等原因 仅分配给变量是行不通的 因为某些库会打印进度条等信息 到目前为止 最有希望的方法是使用 capture然而 在最近的版本中