code: def _read(self, stream, name: str):
      buffer = ""
      while stream.readable():
          data = stream.read(1)
          if len(data) == 0:
              break
          buffer += data
          print(data, end="")
          if "\n" in buffer or len(buffer) > 100:
              self.app_console_logs.outputs(**{name: buffer})
              buffer = ""
      if len(buffer) > 0:
          self.app_console_logs.outputs(**{name: buffer})
  
imports: import argparse
  import os
  import subprocess
  import sys
  import threading
  import time
  from typing import List
  from labml import logger, experiment
  from labml.experiment import generate_uuid
  from labml.internal.app import AppTracker, SimpleAppTrackDataSource
  from labml.internal.app.logs import AppConsoleLogs
  from labml.internal.app.url import AppUrlResponseHandler
  from labml.internal.lab import get_app_url_for_handle
  from labml.logger import Text
  from labml.utils.validators import ip_validator
label_desc: Use image node_id 2 for calling the ExecutorThread obj's underlying member method code with example usage: obj._read(stream, name) without return types