class_docstr: 可用于监控某个数值，并通过 :meth:`is_better_results` 等接口检测结果是否变得更好。
  
  :param monitor: 监控的 metric 值：
  
      * 为 ``None``
       将尝试使用 :class:`~fastNLP.core.controllers.Trainer` 中设置 `monitor` 值（如果有设置）；
      * 为 ``str``
       尝试直接使用该名称从 ``evaluation`` 结果中寻找，如果在 ``evaluation`` 结果中没有找到完全一致的名称，将
       使用 最长公共字符串算法 从 ``evaluation`` 结果中找到最匹配的那个作为 ``monitor`` ；
      * 为 :class:`Callable`
       接受参数为 ``evaluation`` 的结果(字典类型)，返回一个 ``float`` 值作为 ``monitor`` 的结果，如果当前结果中没有相关
       的 ``monitor`` 值请返回 ``None`` ；
  :param larger_better: monitor 是否为越大越好；
docstr: 返回 monitor 的名字，如果 monitor 是个 Callable 的函数，则返回该函数的名称。
  
  :return:
docstr_tok: ["\u8fd4\u56de","monitor","\u7684\u540d\u5b57\uff0c\u5982\u679c","monitor","\u662f\u4e2a","Callable","\u7684\u51fd\u6570\uff0c\u5219\u8fd4\u56de\u8be5\u51fd\u6570\u7684\u540d\u79f0\u3002",":","return",":"]
code: def monitor_name(self):
      """
      返回 monitor 的名字，如果 monitor 是个 Callable 的函数，则返回该函数的名称。
  
      :return:
      """
      if callable(self.monitor):
          try:
              monitor = self.monitor
              while isinstance(monitor, functools.partial):
                  monitor = monitor.func
              monitor_name = monitor.__qualname__
          except:
              monitor_name = self.monitor.__name__
      elif self.monitor is None:
          return None
      else:
          # 这里是能是monitor，而不能是real_monitor，因为用户再次运行的时候real_monitor被初始化为monitor了
          monitor_name = str(self.monitor)
      return monitor_name
  
imports: from typing import Dict, Union, Any
  from abc import ABC
  import functools
  from fastNLP.core.utils import apply_to_collection
  from fastNLP.core.callbacks import Callback
  from fastNLP.core.callbacks.utils import _get_monitor_value
  from fastNLP.core.log import logger
  from fastNLP.core.utils.utils import _check_valid_parameters_number
label_desc: Use image node_id 8 for calling the ResultsMonitor obj's underlying member method code with example usage: obj.monitor_name() and returns: monitor_name, None