我使用Jupyter Notebook进行一系列需要一些时间的实验。
某些单元格花费太多时间执行,因此正常情况下我想关闭浏览器选项卡,然后稍后再返回。 但是当我这样做时,内核中断正在运行。
我想有一个解决方法,但我找不到
似乎最简单的解决方法是内置单元魔术%%capture:
%%capture output
# Time-consuming code here
保存,关闭标签页,稍后再返回。现在,输出存储在output变量中:
output.show()
这将显示所有临时print结果以及普通或丰富输出单元格。
TL; DR:
代码不会在选项卡关闭时停止,但是输出不再能够找到当前的浏览器会话,并且会丢失有关其应如何显示的数据,从而导致它丢弃接收到的所有新输出,直到代码完成时才在选项卡上运行关闭。
不幸的是,此方法尚未实现(11月24日)。如果有解决方法,我也找不到。 (仍在查找,将随新闻更新。)有一种解决方法,可以保存输出然后重新打印,但是如果该笔记本中仍在运行代码,则该方法将不起作用。另一种选择是拥有第二个笔记本,您可以在其中获得输出。
出于相同的原因,我也需要此功能。内核不会关闭或在选项卡关闭时中断。关闭选项卡后,代码不会停止运行。给出的警告完全正确:"内核正忙,可能会丢失输出。"
import time
a = 0
while a < 100:
print(a)
time.sleep(1)
在一个框中,然后关闭选项卡,再次将其打开,然后运行
print(a)
从另一个盒子中取出来将导致它挂起,直到100秒完成并且代码完成,然后它将打印100。
关闭标签页后,当您返回标签页时,python进程将处于您离开时的状态(最后一次保存完成时)。那是他们的预期行为,并且应该在文档中更清楚地了解它们。运行代码的输出实际上是在重新打开浏览器后发送到浏览器的(丢失了解释这一点的参考),因此像此注释中的代码一样的hacks可以正常工作,因为它可以接收这些代码并将它们放入某个单元格中。
仅通过端点连接以可访问的方式保存输出。他们已经为此工作了一段时间(在Jupyter之前),尽管我无法在Jupyter存储库中找到当前的错误(此错误引用了它,但不是)。
唯一的常规解决方法似乎是找到您可以始终打开的计算机,并在计算机运行时将其保留在页面上,然后进行远程访问或依靠自动保存来在其他位置访问该计算机。这是一个不好的方法,但是不幸的是,我现在必须这样做。
相关问题:
关闭正在运行代码的IPython Notebook
确认不会更新输出,但未提及中断功能。
IPython Notebook-关闭浏览器后继续打印到笔记本输出
在链接中提供解决方法。上面引用
我不认为关闭选项卡时代码实际上不会中断。但是,输出就是您所说的。因此,Im使用的微不足道的解决方法是以易于重新生成输出的方式来存储我的计算结果。我特别存储了我分类中的混淆矩阵和ROC曲线,然后重新绘制它们。
你是对的。我终于绕过去重新测试了。接得好。我还从Jupyters和IPython的bug列表本身中获得了更多详细信息。虐待追捕他们并更新帖子。
通过菜单命令"全部运行"运行整个笔记本时如何?一个单元格后执行会停止吗?
@IanS那是一个很好的问题。除非有人击败我,否则我会尽快与您联系。
谢谢!我进行了一些实验,我很确定整个笔记本都可以执行。当然会丢失输出,但是所有单元都运行到最后。
我个人通过将重要输出存储在Google Spreadsheets(通过pygsheets库)中来解决此问题。这样,无论浏览器活动如何,都将保存输出。
我在这个问题上也挣扎了一段时间。
我的解决方法是将所有日志写入文件,以便在我的浏览器关闭时(实际上,当许多日志通过浏览器时也会挂起),我可以通过打开日志文件来查看内核作业过程(日志文件可以也可以使用Jupyter打开)。
#!/usr/bin/python
import time
import datetime
import logging
logger = logging.getLogger()
def setup_file_logger(log_file):
hdlr = logging.FileHandler(log_file)
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
def log(message):
#outputs to Jupyter console
print('{} {}'.format(datetime.datetime.now(), message))
#outputs to file
logger.info(message)
setup_file_logger('out.log')
for i in range(10000):
log('Doing hard work here i=' + str(i))
log('Taking a nap now...')
time.sleep(1000)
runipy
pip install runipy
现在,使用以下命令在后台运行笔记本:
nohup runipy YourNotebook.ipynb OutputNotebook.ipynb >> notebook.log &
现在,输出文件将被保存,并且您可以在使用以下命令运行时看到日志:
tail -f notebook.log
我使用Jupyter Notebook进行一系列需要一些时间的实验。某些单元格花费太多时间执行,因此正常情况下我想关闭浏览器选项卡,然后稍后再返回。 但是当我这样做时,内核中断正在运行。我想有一个解决方法,但我找不到似乎最简单的解决方法是内置单元魔术%%capture:%%capture output# Time-consuming code here保存,关闭标签页,稍后再返回。现在,输出存储在...
场景是这样的,今天在使用jyputer
notebook
写
代码
时,因为
代码
比较长,刚好图书馆有外接的显示器可以用,所以在
浏览器
中打开了同一个
notebook
,手头的拿来写,另外一个只拿来看之前的
代码
。
but,刚才脑子抽了不小心把那个旧的
notebook
保存了,导致新写的
代码
都丢失了,心里一万只草泥马跑过啊,眼前发黑,两眼呆滞…
赶紧上网查找解决方案,找了一个可行的在这里贴出来。
因为我的
notebook
没有
关闭
,内核还在
运行
,所以可以这样解决:
在
notebook
中执行下面
代码
:
history
3.
关闭
当前
标签
页
(从
标签
页
A打开新的
标签
页
B,
关闭
标签
页
B)
可利用
浏览器
自带的快捷方式对打开的
标签
进行
关闭
Firefox自身的快捷键分别为:
Ctrl+t 新建
tab
Ctrl+w
关闭
tab
Ctrl+
Tab
/Ctrl+Page_Up 定位当前
标签
页
的下一个
标签
页
Ctrl+Shift+
Tab
/Ctrl+Page_Down 定位当前
标签
页
的前一个
标签
页
Ctrl+[数字键1-8] 定位所有
标签
页
中最前的第[1-8]个
Ctrl+数字键
文章目录
jupyter
使用笔记一、
jupyter
管理 kernel:二、
jupyter
后台
运行
:
jupyter
使用笔记
一、
jupyter
管理 kernel:
参考我的另一篇博客:
https://blog.csdn.net/pentiumCM/article/details/107065832
二、
jupyter
后台
运行
:
nohup
jupyter
notebook
--allow-root > error.log &
重新打开shell,输入ps -aux就可以看到后台启动的
运行
这句,可以使
jupyter
notebook
在后台一直
运行
(即使断开本地对服务器的连接也没事),这样可以随时在
浏览器
访问
nohup
jupyter
notebook
--allow-root&
会开不会关?,这就教你
ps -aux | grep
jupyter
这条命令可以查看正在
运行
的和
jupyter
有关的程序
kill -9 PID
把这句的PID改成你查看到的,比如我的是2056,就是
kill -9 2856
如果还有疑问可以在下方留言或加群讨论:484
Jupyter
notebook
不用
浏览器
打开就能
运行
记录自己踩坑的过程场景描述安装将py
代码
转成ipynb将py
代码
转成ipynb并执行小tips
记录自己踩坑的过程
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎
页
。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
我用
jupyter
notebook
写了一些keras
运行
神经网络的
代码
,要
运行
多个实验生成实验对比图,但是跑一个实验的过程太久了,跑完点击下一个代
一直苦于
python
蹩脚的ide,最近寻觅到一个非常优秀的
python
交互式shell工具i
python
,再次总结下实际中常用到的方法:
特别说明下:本人为windows环境,所有命令都是相对windows的
1、进入i
python
I
Python
中的单元格魔法
I
Python
拥有一些被称为"魔法"(magic)的命令,这些命令独立于
Python
语法,且用户可扩展出新的命令。"魔法"的设计初衷在于可以在I
Python
中交互式地执行一些命令(比如执行某些系统命令),所以它遵循了命令行的一些惯例,比如:使用空格来分隔参数,'-'来表示选项等。
"魔法"有两种:
行魔法(line magic): 以"%"为前缀,且整个命令(包...
Jupyter
notebook
在服务器后台
运行
之前介绍了如何使用
jupyter
notebook
连接远程服务器,但是如果连接服务器的前端
关闭
就需要重新进行连接,因此这里说一下如何将
notebook
挂在服务器后台一直
运行
。
其实也很简单,只需要一行
代码
:
nohup
jupyter
notebook
--no-browser --port=8889 --ip=127.0.0.1 &
==nohub command &==是将要做的command指令放到服务器后台
运行
,这样即使前端
关闭
也不
这篇总结主要是关于两方面的需求:其一,在
浏览器
不同
tab
标签
页
之间按时间切换(同事用来不停刷新grid crontol 监控
页
面);其二,实现开启多个窗口,并将窗口缩放到一定范围,并齐占满整个桌面,按不同的时间间隔刷新几个
页
面。
一、
标签
页
之间切换
之前这个通过找了一个
浏览器
插件
tab
-rotator实现了其需求,并未写程序实现,后面没事的时候网上翻selenium资料写了一个,内容...
jupyter
关闭
自动退出功能:修改C:\Users\your_username\.
jupyter
\jypyter_
notebook
_config.py文件第269行左右,修改为一下内容:
## Shut down the server after N seconds with no kernels or terminals running and
# no activity. This ...
tab
对于需要 共享 的
代码
而言是灾难。
pyhton对这点的明确要求是不要混合使用4个空格和
tab
键.
只使用二者之一,都是没有问题的.如果一个
python
代码
已经完成的部分,都是使用的4个空格.那么这个时候,就不可以插入
tab
键,而必须使用空格.
不同的平台对
tab
展开空格的个数的显示效果并不相同.使用空格的好处是,可以使得各个平台下,效果完全一致.