code: def _get_pipe_name(name):
      if sys.platform.startswith("linux"):
          # linux supports abstract sockets: http://api.zeromq.org/4-1:zmq-ipc
          pipename = "ipc://@{}-pipe-{}".format(
              name, str(uuid.uuid1())[:8]
          )
          pipedir = os.environ.get("TENSORPACK_PIPEDIR", None)
          if pipedir is not None:
              logger.warn(
                  "TENSORPACK_PIPEDIR is not used on Linux any more! Abstract sockets will be used."
              )
      else:
          pipedir = os.environ.get("TENSORPACK_PIPEDIR", None)
          if pipedir is not None:
              logger.info(
                  "ZMQ uses TENSORPACK_PIPEDIR={}".format(pipedir)
              )
          else:
              pipedir = "."
          assert os.path.isdir(pipedir), pipedir
          filename = "{}/{}-pipe-{}".format(
              pipedir.rstrip("/"), name, str(uuid.uuid1())[:6]
          )
          assert not os.path.exists(
              filename
          ), "Pipe {} exists! You may be unlucky.".format(filename)
          pipename = "ipc://{}".format(filename)
      return pipename
  
imports: import atexit
  import pickle
  import errno
  import traceback
  import itertools
  import multiprocessing
  import os
  import sys
  import uuid
  import weakref
  from contextlib import contextmanager
  import zmq
  from six.moves import queue, range
  from ..utils import logger
  from ..utils.concurrency import StoppableThread, enable_death_signal, ensure_proc_terminate, start_proc_mask_signal
  from ..utils.serialize import dumps_once, loads_once
  from .base import DataFlow, DataFlowReentrantGuard, DataFlowTerminated, ProxyDataFlow
label_desc: Use image node_id 3 for calling a global function with example usage: _get_pipe_name(name) and returns: pipename