class_docstr: This AsyncCaller tries to make it easier to async call
  
  Currently, it is used in MLflowRecorder to make functions like `log_params` async
  
  NOTE:
  - This caller didn't consider the return value
code: def __call__(self, func, *args, **kwargs):
      self._q.put(partial(func, *args, **kwargs))
  
imports: from functools import partial
  from threading import Thread
  from typing import Callable, Text, Union
  from joblib import Parallel, delayed
  from joblib._parallel_backends import MultiprocessingBackend
  import pandas
  from queue import Queue
  import concurrent
  from qlib.config import C, QlibConfig
label_desc: Use image node_id 4 for calling the AsyncCaller obj's underlying member method code with example usage: obj.__call__(func) without return types