From a9b748024ff32cbce57e5f8995544a95ec145aee Mon Sep 17 00:00:00 2001 From: "Chi Wang (MSR)" Date: Fri, 5 Feb 2021 22:18:11 -0800 Subject: [PATCH] bug fix --- flaml/searcher/suggestion.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/flaml/searcher/suggestion.py b/flaml/searcher/suggestion.py index 4fc73d9fc..bf9db2ac3 100644 --- a/flaml/searcher/suggestion.py +++ b/flaml/searcher/suggestion.py @@ -19,6 +19,7 @@ import copy import glob import logging import os +import time from typing import Dict, Optional, Union, List, Tuple logger = logging.getLogger(__name__) @@ -43,6 +44,36 @@ UNDEFINED_METRIC_MODE = str( "or pass them to `tune.run()`.") +_logged = set() +_disabled = False +_periodic_log = False +_last_logged = 0.0 + + +def log_once(key): + """Returns True if this is the "first" call for a given key. + Various logging settings can adjust the definition of "first". + Example: + >>> if log_once("some_key"): + ... logger.info("Some verbose logging statement") + """ + + global _last_logged + + if _disabled: + return False + elif key not in _logged: + _logged.add(key) + _last_logged = time.time() + return True + elif _periodic_log and time.time() - _last_logged > 60.0: + _logged.clear() + _last_logged = time.time() + return False + else: + return False + + class Searcher: """Abstract class for wrapping suggesting algorithms. Custom algorithms can extend this class easily by overriding the