code: def start(self, num_processes: Optional[int] = 1, max_restarts: int = None) -> None:
          
          assert not self._started
          self._started = True
          if num_processes != 1:
              process.fork_processes(num_processes, max_restarts)
          sockets = self._pending_sockets
          self._pending_sockets = []
          self.add_sockets(sockets)
docs: Starts this server in the `.IOLoop`.
  
          By default, we run the server in this process and do not fork any
          additional child process.
  
          If num_processes is ``None`` or <= 0, we detect the number of cores
          available on this machine and fork that number of child
          processes. If num_processes is given and > 1, we fork that
          specific number of sub-processes.
  
          Since we use processes and not threads, there is no shared memory
          between any server code.
  
          Note that multiple processes are not compatible with the autoreload
          module (or the ``autoreload=True`` option to `tornado.web.Application`
          which defaults to True when ``debug=True``).
          When using multiple processes, no IOLoops can be created or
          referenced until after the call to ``TCPServer.start(n)``.
  
          Values of ``num_processes`` other than 1 are not supported on Windows.
  
          The ``max_restarts`` argument is passed to `.fork_processes`.
  
          .. versionchanged:: 6.0
  
             Added ``max_restarts`` argument.