code: def rank_zero_call(fn: Callable):
      """
      通过该函数包裹的函数，在单卡模式下该方法不影响任何东西，在多卡状态下仅会在 global rank 为 0 的进程下执行。使用方式有两种
  
      使用方式1::
  
          @rank_zero_call
          def save_model():
              do_something # will only run in global rank 0
  
      使用方式2::
  
          def add(a, b):
              return a+b
          rank_zero_call(add)(1, 2)
  
      同时，该函数还会设置环境变量 ``FASTNLP_NO_SYNC`` 为 **2** ，在这个环境下，所有的 **fastNLP** 内置的 :meth:`barrier` 接口和 ``gather`` / ``broadcast``
      操作都没有任何意义。
  
      :param fn: 需要包裹的可执行的函数。
      :return:
      """
  
      @wraps(fn)
      def wrapped_fn(*args: Any, **kwargs: Any) -> Optional[Any]:
          if int(os.environ.get(FASTNLP_GLOBAL_RANK, 0)) == 0:
              with fastnlp_no_sync_context(level=2):
                  return fn(*args, **kwargs)
          return None
  
      return wrapped_fn
  
file_path: fastNLP/fastNLP/envs/distributed.py
imports: import os
  from functools import wraps
  from pathlib import Path
  from typing import Callable, Any, Optional, Union
  from contextlib import contextmanager
  from fastNLP.envs.env import FASTNLP_GLOBAL_RANK, FASTNLP_NO_SYNC
label_desc: Use image node_id 3 for calling a global function with example usage: rank_zero_call(fn) and returns: wrapped_fn, None, fn