code: def _do_push_pull_async(
      tensor, output, average, name, version=0, priority=0
  ):
      c_lib.byteps_torch_declare_tensor(
          name.encode() if name is not None else _NULL
      )
      function = _check_function(_push_pull_function_factory, tensor)
      handle = getattr(c_lib, function)(
          tensor,
          output,
          average,
          name.encode() if name is not None else _NULL,
          version,
          priority,
      )
      _handle_map[handle] = (tensor, output)
      return handle
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from distutils.version import LooseVersion
  import torch
  from byteps.torch import c_lib
  from byteps.common import BytePSBasics
  from byteps.torch.compression import Compression
label_desc: Use image node_id 4 for calling a global function with example usage: _do_push_pull_async(tensor, output, average, name, version, priority) and returns: handle