class_docstr: Processing and distribution per core
  
  This shows how many tasks are actively running on each worker and how many
  tasks are enqueued for each worker and how many are in the common pool
class_docstr_tok: ["Processing","and","distribution","per","core","This","shows","how","many","tasks","are","actively","running","on","each","worker","and","how","many","tasks","are","enqueued","for","each","worker","and","how","many","are","in","the","common","pool"]
code: def processing_update(msg):
      names = sorted(msg["processing"])
      names = sorted(names)
      processing = msg["processing"]
      processing = [processing[name] for name in names]
      nthreads = msg["nthreads"]
      nthreads = [nthreads[name] for name in names]
      n = len(names)
      d = {
          "name": list(names),
          "processing": processing,
          "right": list(processing),
          "top": list(range(n, 0, -1)),
          "bottom": list(range(n - 1, -1, -1)),
          "nthreads": nthreads,
      }
  
      d["alpha"] = [0.7] * n
  
      return d
  
imports: from __future__ import annotations
  import asyncio
  import weakref
  import tlz
  from bokeh.core.properties import without_property_validation
  from bokeh.layouts import column, row
  from bokeh.models import Button, ColumnDataSource, DataRange1d, HoverTool, LabelSet, NumeralTickFormatter, Range1d, Select, Title
  from bokeh.palettes import Spectral9
  from bokeh.plotting import figure
  from tornado import gen
  import dask
  from distributed import profile
  from distributed.compatibility import WINDOWS
  from distributed.dashboard.components import DashboardComponent
  from distributed.dashboard.utils import update
  from distributed.utils import log_errors
label_desc: Use image node_id 3 for calling the Processing obj's underlying member method code with example usage: obj.processing_update(msg) and returns: d