### Apache Airflow version

2.4.1

### What happened

When there are large number of dag files, lets say 10K and each takes sometime to parse,  dag_parser doesnt pick any newly created files till all 10k files are finished parsing

`if not self._file_path_queue:
                self.emit_metrics()
                self.prepare_file_path_queue()`

Above logic only adds new files to queue when queue is empty

### What you think should happen instead

Every loop of dag processor should pick new files and add into file for parsing queue

### How to reproduce

_No response_

### Operating System

All

### Versions of Apache Airflow Providers

_No response_

### Deployment

Docker-Compose

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

"""Register signals that stop child processes"""
        signal.signal(signal.SIGINT, self._exit_gracefully)
        signal.signal(signal.SIGTERM, self._exit_gracefully)
        
        signal.signal(signal.SIGUSR2, signal.SIG_IGN)
    def _exit_gracefully(self, signum, frame):
        """Helper method to clean up DAG file processors to avoid leaving orphan processes."""
        self.log.info("Exiting gracefully upon receiving signal %s", signum)
        self.log.debug("Current Stacktrace is: %s", "\n".join(map(str, inspect.stack())))
        self.terminate()
        self.end()
        self.log.debug("Finished terminating DAG processors.")
        sys.exit(os.EX_OK)
    def start(self):
        """
        Use multiple processes to parse and generate tasks for the
        DAGs in parallel. By processing them in separate processes,
        we can get parallelism and isolation from potentially harmful
        user code.
        """
        self.register_exit_signals()
        set_new_process_group()
        self.log.info("Processing files using up to %s processes at a time ", self._parallelism)
        self.log.info("Process each file at most once every %s seconds", self._file_process_interval)
        self.log.info(
            "Checking for new files in %s every %s seconds", self._dag_directory, self.dag_dir_list_interval
        )
        return self._run_parsing_loop()
    @provide_session
    def _deactivate_stale_dags(self, session=None):