code: def check_process_alive(server_id):
      """
      Given a server id, check whether the process is alive or not.
      Args:
          server_id(str): fastdeployserver process name
      Return:
          status(bool): True if process is still alive.
      """
      pid = get_process_pid(server_id)
      if pid is None:
          return False
      if (
          pid == -1
      ):  # We use -1 to mark zombie process which has been dead process.
          # Consider user wants to know the reason for dead process  due to exception,
          # we return True to let user in frontend can get the log for dead process.
          return True
      try:
          os.kill(pid, 0)
      except OSError:
          return False
      else:
          if (
              "fastdeployserve" not in psutil.Process(pid).name()
          ):  # We should judge the pid is fastdeployserver process, in case pid has been reassigned.
              # Note: I do not know why psutil.Process(pid).name() is fastdeployserve but not fastdeployserver.
              return False
          else:
              return True
  
imports: import copy
  import json
  import os
  import random
  import re
  import signal
  import string
  from collections import defaultdict
  from subprocess import Popen
  from subprocess import STDOUT
  import google.protobuf.json_format
  import google.protobuf.text_format
  import psutil
  import requests
  from .proto.model_config_pb2 import ModelConfig
  from visualdl.utils.dir import FASTDEPLOYSERVER_PATH
label_desc: Use image node_id 24 for calling a global function with example usage: check_process_alive(server_id) and returns: False, True, False, False, True