【问题标题】:Jupyter Notebook Kernal Keeps dying - low memory?Jupyter Notebook 内核一直死机 - 内存不足?
【发布时间】:2019-08-01 11:49:44
【问题描述】:

我正在尝试两行不同的代码,它们都涉及计算 df 行与 500k 行的组合。

我认为在大量组合中,内核一直在死亡。有没有办法解决这个问题?

崩溃的两行代码都是

pd.merge(df.assign(key=0), df.assign(key=0), on='key').drop('key', axis=1)

index_comb = list(combinations(df.index, 2))

两者都是实现相同所需 df 的不同方法,但内核都失败了。

不胜感激:/

更新:我尝试在终端中使用代码,但它给了我一个 kill 9 的错误:它也在终端中使用了太多内存?

【问题讨论】:

    标签: python python-3.x dataframe jupyter-notebook combinations


    【解决方案1】:

    据我所知,这里没有解决方案。 Jupyter Notebook 根本不是为处理大量数据而设计的。在终端中编译您的代码,这应该可以工作。

    如果您在使用终端时遇到同样的问题,请看这里:Python Killed: 9 when running a code using dictionaries created from 2 csv files

    编辑:我最终找到了一种可能解决此问题的方法:增加容器大小应该可以防止 Jupyter 内存不足。为此,请在笔记本 $CHORUS_NOTEBOOK_HOME 的主目录中打开 jupyter 的 settings.cfg 文件 要编辑的行是这一行:

    #default memory per container
    
    MEM_LIMIT_PER_CONTAINER=“1g”
    

    每个容器的默认值应为 1 GB,将其增加到 2 或 4 GB 应该有助于解决与内存相关的崩溃问题。但是我不确定这对性能有什么影响,所以请注意!

    【讨论】:

    • 谢谢 :) 我并没有真正使用终端——阅读 csvs 和所有这些工作吗? pd.read_csv('x.csv') 我是否需要将其更改为指向 csv 所在的目录?
    • 另外,如果你想从终端输出一个 df 作为 csv,你可以直接将该 csv 指向特定目录吗? @neweyes
    • 来自笔记本的代码几乎不需要更改。 Ipython 在 jupyter 下工作,因此您应该能够简单地将代码复制粘贴到文件中(与笔记本位于同一目录中)并通过键入运行它: ipython filename.py
    • 我无法理解您的第二个问题...您只想将输出保存在特定位置吗?
    • @NewEyes 您能否详细说明什么是“大量”数据?我已经顺利使用了 10Ks 数据集,我只是想知道导致您这么说的性能下降发生在哪里。
    猜你喜欢
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2021-10-24
    • 2019-07-07
    • 2019-07-31
    相关资源
    最近更新 更多