【发布时间】:2014-07-04 02:06:52
【问题描述】:
切入正题,我想知道如何在 ipython 笔记本中显示打印语句,同时防止这些语句保存到 .ipynb 文件中。目的是制作一个不会使文件大小过大的进度条。
背景是我一直在编写一些 python 代码,它制作了一堆 png 文件,以便我最终可以将它们编译成 GIF。当我这样做的时候,我想我会很聪明,并使用print() from __future__ 和回车来打印任务的进度。不幸的是,虽然我的代码有两个问题,但我认为这两个问题都与我对此进度消息的实现有关。
第一个问题是github对文件大小的限制:
当我第一次尝试将我的文件上传到 github 时,它阻止了我这样做,因为它超过了 100 MB 的限制。在调查了我的 .ipynb 文件后,我发现有大量的打印语句被保存在那里。最初我认为包含'\r' 来执行回车会阻止这种情况,但显然情况并非如此。
第二个问题大概和这个有关:
通常我在创建前几个 GIF 时没有问题,特别是如果我不包含那么多帧,但除此之外,我的 python 笔记本崩溃了。如果这是一个典型的内存问题,我想它只会向我抛出一个错误,但它不会,而是立即死在我身上。
以下是导致 .ipynb 文件膨胀的示例:
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\r",
"frame 1 -- 0.480% complete -- U_avg = -7.200000\r",
"frame 1 -- 0.500% complete -- U_avg = -7.200000\r",
"frame 1 -- 0.520% complete -- U_avg = -7.200000\r",
"frame 1 -- 0.540% complete -- U_avg = -7.200000\r",
"frame 1 -- 0.560% complete -- U_avg = -7.200000\r",
"frame 1 -- 0.580% complete -- U_avg = -7.200000\r",
"frame 1 -- 0.600% complete -- U_avg = -7.200000\r",
"frame 1 -- 0.620% complete -- U_avg = -7.200000\r",
"frame 1 -- 0.640% complete -- U_avg = -7.200000\r",
"frame 1 -- 0.660% complete -- U_avg = -7.200000\r",
"frame 1 -- 0.680% complete -- U_avg = -7.200000\r",
"frame 1 -- 0.700% complete -- U_avg = -7.200000\r",
"frame 1 -- 0.720% complete -- U_avg = -7.200000\r", ......
我研究了其他人是如何实现进度条的,但他们似乎没有做任何特别的事情,这实际上可以防止我遇到的问题。如果归根结底,我不介意在黑匣子中导入可以解决此问题的东西,但同时,如果我在不同的上下文中遇到此问题,了解如何减少 .ipynb 将很有用通过删除保存的打印语句来调整文件大小。
谢谢!
【问题讨论】:
标签: python memory-management progress-bar filesize carriage-return