python - Gurobi 和 gurobipy - 使用 Python 日志记录时输出控制台加倍
问题描述
例如,当将 Gurobi Python 包(gurobipy v. 8.1.0)与标准 Python 日志记录包一起使用时,我在控制台上获得了 Gurobi 的双倍输出
Total elapsed time = 498.27s
[2019-03-04 17:51:58,804][INFO] Total elapsed time = 498.27s
有人知道如何删除 gurobipy 的日志记录吗?谢谢
解决方案
我也有这个问题。找不到“官方”解决方案,所以我推出了自己的 hack:
import sys
def solve():
class DevNull:
def write(self, *args, **kwargs):
pass
def flush(self, *args, **kwargs):
pass
sys.stdout = DevNull()
try:
return _actually_solve()
except Exception:
# restore stdout so that handlers can print normally
# https://docs.python.org/3/library/sys.html#sys.__stdout__
sys.stdout = sys.__stdout__
raise
finally:
sys.stdout = sys.__stdout__
该函数将实际的求解逻辑包装在其中_actually_solve
,并将标准输出替换为一个类似文件的对象,该对象忽略我们在其中编写的所有内容。
推荐阅读
- javascript - Vue-test-utils 找不到`Set()`:ReferenceError:找不到变量:Set
- c# - 如何在 C# 中重新验证模型?
- scala - ScalaTest:在同一毫秒内将 Instant 视为相等
- excel - 使用基于单元格的计算来创建表格
- javascript - ADF如何从bean触发一个clientListener?
- pug - 如何使用 pug 作为 angular-cli 的默认模板引擎?
- powershell - 通过powershell查找对计算机具有管理员访问权限的所有用户的语言无关方式
- azure-ad-b2c - APIM 开发人员门户示例生产站点
- java - Java Selenium 在没有 IDE 的情况下通过命令提示符 CMD Windows 运行
- vim - 如果通过资源管理器地址栏打开'vim',则在 cmd 中无法识别?