class_docstr: simple cache for WarmProcess-es
      
class_docstr_tok: ["simple","cache","for","WarmProcess-es"]
docstr: start worker that close connections after ttl expired
          
docstr_tok: ["start","worker","that","close","connections","after","ttl","expired"]
code: def _start_clean(self) -> None:
      """start worker that close connections after ttl expired"""
      if (
          isinstance(self.cleaner_thread, threading.Thread)
          and self.cleaner_thread.is_alive()
      ):
          return
      self._stop_event.clear()
      self.cleaner_thread = threading.Thread(target=self._clean)
      self.cleaner_thread.daemon = True
      self.cleaner_thread.start()
  
imports: import sys
  import time
  import threading
  from typing import Optional, Callable
  from concurrent.futures import ProcessPoolExecutor, Future
  from pandas import DataFrame
  from mindsdb.utilities.config import Config
  from mindsdb.utilities.context import context
  from mindsdb.utilities.ml_task_queue.const import ML_TASK_TYPE
  from mindsdb.integrations.libs.learn_process import learn_process, predict_process
label_desc: Use image node_id 3 for calling the ProcessCache obj's underlying member method code with example usage: obj._start_clean() without return types