我正在尝试使用批处理文件和Windows任务管理器自动化IPython脚本。经过深入研究,我发现您可以使用任务管理器触发BAT,并通过它执行nbconvert
包,以便在没有交互位的情况下运行Jupyter Notebook。
在BAT中,我的代码首先"* 将Windows cmd转换为Anaconda Prompt *",代码如下:<anaconda3 path>\Scripts\activate.bat <anaconda3 path>
(No正规的CS教育,所以请原谅我。)
该行允许我在Windows cmd之外运行conda
和jupyter
命令。
jupyter nbconvert --execute --ExecutePreprocessor.enabled=True --ExecutePreprocessor.timeout=60 <Notebook>
当这种情况发生时,我一直收到超时错误。是的,我可以调整计时器,但在将计时器设置为10小时并在早上回来之前,我希望对nbconvert
中的幕后发生的事情有一些了解。也许还有一些关于如何让这个工作的见解。当通过Jupyter Notebook运行时,. ipynb文件工作正常。然而,在某个点上,脚本试图加载几GB的数据,每次运行它都要花大约20分钟。
为此,当nbconvert
使用预处理器时,它们是否会抢先运行整个脚本?我很难找到一个原因,为什么在执行nbconvert
命令时,nothing没有打开、ping、运行、更新等。我希望RAM使用率至少会上升,但据我所知,这也没有发生。
如何解决这个问题,以及执行nbconvert
时在幕后发生了什么?
追溯:
C:\Users\User>jupyter nbconvert --execute "C:\Users\User\Desktop\_for_Python\CBSA.ipynb"
[NbConvertApp] Converting notebook C:\Users\User\Desktop\_for_Python\CBSA.ipynb to html
[NbConvertApp] Executing notebook with kernel: python3
[NbConvertApp] ERROR | Timeout waiting for execute reply (30s).
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Continuum\anaconda3\lib\site-packages\nbconvert\preprocessors\execute.py", line 423, in _wait_for_reply
msg = self.kc.shell_channel.get_msg(timeout=timeout)
File "C:\Users\User\AppData\Local\Continuum\anaconda3\lib\site-packages\jupyter_client\blocking\channels.py", line 57, in get_msg
raise Empty
_queue.Empty
3条答案
按热度按时间kpbwa7wx1#
对于任何其他遇到此错误但路径正确的人,我可以使用标志--ExecutePreprocessor.timeout = 300来延长超时
根据文件:
超时traitlet定义了每个笔记本单元格允许运行的最长时间(以秒为单位),如果运行时间较长,则会引发异常。默认值为30秒,因此对于长时间运行的单元格,您可能需要指定一个更高的值。
cygmwpex2#
通过将
Anaconda3/Library/Bin
路径添加到c/windows/system32
PATH中修复。由于DLL错误而发生超时,在命令行中作为超时返回。dba5bblo3#
根据文件:"
timeout
选项也可以设置为None
或-1
以删除对执行时间的任何限制。"。因此,这将是:--ExecutePreprocessor.timeout=-1