class_docstr: When we repeatedly run functions, it is hard to avoid memory leakage.
  So we run it in the subprocess to ensure it is OK.
  
  NOTE: Because local object can't be pickled. So we can't implement it via closure.
        We have to implement it via callable Class
code: def __call__(self, *args, **kwargs):
      with concurrent.futures.ProcessPoolExecutor(
          max_workers=1
      ) as executor:
          return executor.submit(
              self._func_mod, *args, **kwargs
          ).result()
  
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 3 for calling the call_in_subproc obj's underlying member method code with example usage: obj.__call__() and returns: executor