class_docstr: An interface for Scheduler and Worker processes for use in SpecCluster
  
  This interface is responsible to submit a worker or scheduler process to a
  resource manager like Kubernetes, Yarn, or SLURM/PBS/SGE/...
  It should implement the methods below, like ``start`` and ``close``
class_docstr_tok: ["An","interface","for","Scheduler","and","Worker","processes","for","use","in","SpecCluster","This","interface","is","responsible","to","submit","a","worker","or","scheduler","process","to","a","resource","manager","like","Kubernetes",",","Yarn",",","or","SLURM\/PBS\/SGE\/","...","It","should","implement","the","methods","below",",","like","``","start","``","and","``","close","``"]
code: def __init__(self, scheduler=None, name=None):
      self.address = getattr(self, "address", None)
      self.external_address = None
      self.lock = asyncio.Lock()
      self.status = Status.created
      self._event_finished = asyncio.Event()
  
imports: from __future__ import annotations
  import asyncio
  import atexit
  import contextlib
  import copy
  import logging
  import math
  import weakref
  from collections.abc import Awaitable, Generator
  from contextlib import suppress
  from inspect import isawaitable
  from typing import TYPE_CHECKING, Any, ClassVar, TypeVar
  from tornado import gen
  from tornado.ioloop import IOLoop
  import dask
  from dask.utils import parse_bytes, parse_timedelta
  from dask.widgets import get_template
  from distributed.core import Status, rpc
  from distributed.deploy.adaptive import Adaptive
  from distributed.deploy.cluster import Cluster
  from distributed.scheduler import Scheduler
  from distributed.security import Security
  from distributed.utils import NoOpAwaitable, TimeoutError, import_term, silence_logging_cmgr
label_desc: Use image node_id 3 to create a new ProcessInterface object  with example: obj = ProcessInterface(scheduler, name)