我正在使用 Prophet(Facebook 的时间序列库),它会产生大量输出。像这样的东西:
我已经对这样的输出保持沉默:
@contextmanager
def suppress_stdout():
with open(os.devnull, "w") as devnull:
old_stdout = sys.stdout
sys.stdout = devnull
try:
yield
finally:
sys.stdout = old_stdout
但是它并没有静默所有类型的输出,我如何静默所有类型?
这里的问题是 Prophet 的几个记录器,你可以用它们来静音:
import logging
logging.getLogger("prophet").setLevel(logging.ERROR)
logging.getLogger("cmdstanpy").setLevel(logging.ERROR)
我怀疑您正在使用类似 IPython 的环境,例如Jupyter 笔记本。然后您可以在单元格中使用
%%capture
神奇命令。
例如,
%%capture
output = do_some_verbose_things(args)
默认情况下,它还会捕获
stderr
,我认为您看到的输出就在那里。
我需要完全禁用
cmdstanpy
的日志记录。
import logging
logging.getLogger("prophet").setLevel(logging.ERROR)
logging.getLogger("cmdstanpy").disabled=True