class_docstr: Create local Scheduler and Workers
  
  This creates a "cluster" of a scheduler and workers running on the local
  machine.
  
  Parameters
  ----------
  n_workers: int
      Number of workers to start
  memory_limit: str, float, int, or None, default "auto"
      Sets the memory limit *per worker*.
  
      Notes regarding argument data type:
  
      * If None or 0, no limit is applied.
      * If "auto", the total system memory is split evenly between the workers.
      * If a float, that fraction of the system memory is used *per worker*.
      * If a string giving a number of bytes (like ``"1GiB"``), that amount is used *per worker*.
      * If an int, that number of bytes is used *per worker*.
  
      Note that the limit will only be enforced when ``processes=True``, and the limit is only
      enforced on a best-effort basis — it's still possible for workers to exceed this limit.
  processes: bool
      Whether to use processes (True) or threads (False).  Defaults to True, unless
      worker_class=Worker, in which case it defaults to False.
  threads_per_worker: int
      Number of threads per each worker
  scheduler_port: int
      Port of the scheduler. Use 0 to choose a random port (default). 8786 is a common choice.
  silence_logs: logging level
      Level of logs to print out to stdout.  ``logging.WARN`` by default.
      Use a falsey value like False or None for no change.
  host: string
      Host address on which the scheduler will listen, defaults to only localhost
  ip: string
      Deprecated.  See ``host`` above.
  dashboard_address: str
      Address on which to listen for the Bokeh diagnostics server like
      'localhost:8787' or '0.0.0.0:8787'.  Defaults to ':8787'.
      Set to ``None`` to disable the dashboard.
      Use ':0' for a random port.
  worker_dashboard_address: str
      Address on which to listen for the Bokeh worker diagnostics server like
      'localhost:8787' or '0.0.0.0:8787'.  Defaults to None which disables the dashboard.
      Use ':0' for a random port.
  diagnostics_port: int
      Deprecated.  See dashboard_address.
  asynchronous: bool (False by default)
      Set to True if using this cluster within async/await functions or within
      Tornado gen.coroutines.  This should remain False for normal use.
  blocked_handlers: List[str]
      A list of strings specifying a blocklist of handlers to disallow on the
      Scheduler, like ``['feed', 'run_function']``
  service_kwargs: Dict[str, Dict]
      Extra keywords to hand to the running services
  security : Security or bool, optional
      Configures communication security in this cluster. Can be a security
      object, or True. If True, temporary self-signed credentials will
      be created automatically.
  protocol: str (optional)
      Protocol to use like ``tcp://``, ``tls://``, ``inproc://``
      This defaults to sensible choice given other keyword arguments like
      ``processes`` and ``security``
  interface: str (optional)
      Network interface to use.  Defaults to lo/localhost
  worker_class: Worker
      Worker class used to instantiate workers from. Defaults to Worker if
      processes=False and Nanny if processes=True or omitted.
  **worker_kwargs:
      Extra worker arguments. Any additional keyword arguments will be passed
      to the ``Worker`` class constructor.
  
  Examples
  --------
  >>> cluster = LocalCluster()  # Create a local cluster  # doctest: +SKIP
  >>> cluster  # doctest: +SKIP
  LocalCluster("127.0.0.1:8786", workers=8, threads=8)
  
  >>> c = Client(cluster)  # connect to local cluster  # doctest: +SKIP
  
  Scale the cluster to three workers
  
  >>> cluster.scale(3)  # doctest: +SKIP
  
  Pass extra keyword arguments to Bokeh
  
  >>> LocalCluster(service_kwargs={'dashboard': {'prefix': '/foo'}})  # doctest: +SKIP
class_docstr_tok: ["Create","local","Scheduler","and","Workers","This","creates","a","``","cluster","''","of","a","scheduler","and","workers","running","on","the","local","machine",".","Parameters","--","--","--","--","--","n_workers",":","int","Number","of","workers","to","start","memory_limit",":","str",",","float",",","int",",","or","None",",","default","``","auto","''","Sets","the","memory","limit","*","per","worker","*",".","Notes","regarding","argument","data","type",":","*","If","None","or","0",",","no","limit","is","applied",".","*","If","``","auto","''",",","the","total","system","memory","is","split","evenly","between","the","workers",".","*","If","a","float",",","that","fraction","of","the","system","memory","is","used","*","per","worker","*",".","*","If","a","string","giving","a","number","of","bytes","(","like","``","``","1GiB","''","``",")",",","that","amount","is","used","*","per","worker","*",".","*","If","an","int",",","that","number","of","bytes","is","used","*","per","worker","*",".","Note","that","the","limit","will","only","be","enforced","when","``","processes=True","``",",","and","the","limit","is","only","enforced","on","a","best-effort","basis","\u2014","it","'s","still","possible","for","workers","to","exceed","this","limit",".","processes",":","bool","Whether","to","use","processes","(","True",")","or","threads","(","False",")",".","Defaults","to","True",",","unless","worker_class=Worker",",","in","which","case","it","defaults","to","False",".","threads_per_worker",":","int","Number","of","threads","per","each","worker","scheduler_port",":","int","Port","of","the","scheduler",".","Use","0","to","choose","a","random","port","(","default",")",".","8786","is","a","common","choice",".","silence_logs",":","logging","level","Level","of","logs","to","print","out","to","stdout",".","``","logging.WARN","``","by","default",".","Use","a","falsey","value","like","False","or","None","for","no","change",".","host",":","string","Host","address","on","which","the","scheduler","will","listen",",","defaults","to","only","localhost","ip",":","string","Deprecated",".","See","``","host","``","above",".","dashboard_address",":","str","Address","on","which","to","listen","for","the","Bokeh","diagnostics","server","like","'localhost:8787","'","or","'","0.0.0.0:8787","'",".","Defaults","to","':8787","'",".","Set","to","``","None","``","to","disable","the","dashboard",".","Use","':0","'","for","a","random","port",".","worker_dashboard_address",":","str","Address","on","which","to","listen","for","the","Bokeh","worker","diagnostics","server","like","'localhost:8787","'","or","'","0.0.0.0:8787","'",".","Defaults","to","None","which","disables","the","dashboard",".","Use","':0","'","for","a","random","port",".","diagnostics_port",":","int","Deprecated",".","See","dashboard_address",".","asynchronous",":","bool","(","False","by","default",")","Set","to","True","if","using","this","cluster","within","async\/await","functions","or","within","Tornado","gen.coroutines",".","This","should","remain","False","for","normal","use",".","blocked_handlers",":","List","[","str","]","A","list","of","strings","specifying","a","blocklist","of","handlers","to","disallow","on","the","Scheduler",",","like","``","[","'feed","'",",","'run_function","'","]","``","service_kwargs",":","Dict","[","str",",","Dict","]","Extra","keywords","to","hand","to","the","running","services","security",":","Security","or","bool",",","optional","Configures","communication","security","in","this","cluster",".","Can","be","a","security","object",",","or","True",".","If","True",",","temporary","self-signed","credentials","will","be","created","automatically",".","protocol",":","str","(","optional",")","Protocol","to","use","like","``","tcp",":","\/\/","``",",","``","tls",":","\/\/","``",",","``","inproc",":","\/\/","``","This","defaults","to","sensible","choice","given","other","keyword","arguments","like","``","processes","``","and","``","security","``","interface",":","str","(","optional",")","Network","interface","to","use",".","Defaults","to","lo\/localhost","worker_class",":","Worker","Worker","class","used","to","instantiate","workers","from",".","Defaults","to","Worker","if","processes=False","and","Nanny","if","processes=True","or","omitted",".","*","*","worker_kwargs",":","Extra","worker","arguments",".","Any","additional","keyword","arguments","will","be","passed","to","the","``","Worker","``","class","constructor",".","Examples","--","--","--","--",">",">",">","cluster","=","LocalCluster","(",")","#","Create","a","local","cluster","#","doctest",":","+SKIP",">",">",">","cluster","#","doctest",":","+SKIP","LocalCluster","(","``","127.0.0.1:8786","''",",","workers=8",",","threads=8",")",">",">",">","c","=","Client","(","cluster",")","#","connect","to","local","cluster","#","doctest",":","+SKIP","Scale","the","cluster","to","three","workers",">",">",">","cluster.scale","(","3",")","#","doctest",":","+SKIP","Pass","extra","keyword","arguments","to","Bokeh",">",">",">","LocalCluster","(","service_kwargs=","{","'dashboard","'",":","{","'prefix","'",":","'\/foo","'","}","}",")","#","doctest",":","+SKIP"]
code: def _repr_html_(self, cluster_status=None):
      cluster_status = get_template("local_cluster.html.j2").render(
          status=self.status.name,
          processes=self.processes,
          cluster_status=cluster_status,
      )
      return super()._repr_html_(cluster_status=cluster_status)
  
file_path: distributed/distributed/deploy/local.py
imports: from __future__ import annotations
  import logging
  import math
  import warnings
  import toolz
  from dask.system import CPU_COUNT
  from dask.widgets import get_template
  from distributed.deploy.spec import SpecCluster
  from distributed.deploy.utils import nprocesses_nthreads
  from distributed.nanny import Nanny
  from distributed.scheduler import Scheduler
  from distributed.security import Security
  from distributed.worker import Worker
  from distributed.worker_memory import parse_memory_limit
label_desc: Use image node_id 3 for calling the LocalCluster obj's underlying member method code with example usage: obj._repr_html_(cluster_status) and returns: super