【问题标题】:Switch off dask client warnings关闭 dask 客户端警告
【发布时间】:2019-08-09 15:08:28
【问题描述】:

我的 Jupyter Notebook 输出中的 Dask 客户端垃圾邮件警告。有没有办法关闭 dask 警告?

警告文本如下所示:“distributed.worker - WARNING - 内存使用率很高,但工作人员没有数据可存储到磁盘。也许其他进程正在泄漏内存?进程内存:3.16 GB - 工作人员内存限制:4.20国标”

问题出现在这些代码之后:

import pandas as pd
from sqlalchemy import create_engine, MetaData
from sqlalchemy import select, insert, func
import dask.dataframe as dd

from dask.distributed import Client
client = Client(n_workers=4, threads_per_worker=4, processes=False)

engine = create_engine(uri)
meta_core = MetaData()
meta_core.reflect(bind=engine)

table = meta_core.tables['table']

dd_main = dd.read_sql_table(
    table=table,
    uri=uri,
    index_col='id'
)

dd_main.head()

在执行上面的代码块之后,我在每个 Jupyter 单元格中都收到了很多这样的警告,所以我什至找不到我的实际输出。

【问题讨论】:

    标签: python jupyter-notebook dask


    【解决方案1】:

    您可以将日志级别传递给客户端构造函数,如下所示:

    client = Client(..., silence_logs='error')
    

    【讨论】:

    • 这对我不起作用。我收到来自logging 的错误,说无法识别级别。下面ian的解决方案确实有效,或者直接传递50(logging.ERROR的数值)。
    【解决方案2】:

    我不得不使用MRocklin 的答案的变体:

    import logging
    
    client = Client(..., silence_logs=logging.ERROR)
    

    python 的logging 无法识别字符串"error",它使用常量。另一种方法是直接传递常量的数值(此处为logging.ERROR == 50)。见logging levels

    【讨论】:

    • 虽然此代码可能会解决问题,但 including an explanation 关于如何以及为何解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的答案添加解释并说明适用的限制和假设。请特别说明为什么需要更改其他答案,您似乎有特殊原因。
    猜你喜欢
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    相关资源
    最近更新 更多