code: def _read_stdout(self):
      if not self.channel.recv_ready():
          return
  
      with open(str(self.stdout_path), "ab") as f:
          while self.channel.recv_ready():
              data = self.channel.recv(1024)
              f.write(data)
              self.ui_mode.on_bytes(data, is_err=False)
  
file_path: labml/remote/labml_remote/execute/remote.py
imports: import threading
  import time
  from pathlib import Path
  from typing import NamedTuple, Optional
  from paramiko import SSHClient
  from labml import monit
  from labml_remote.execute import UIMode
label_desc: Use image node_id 2 for calling the ExecutorThread obj's underlying member method code with example usage: obj._read_stdout() without return types