<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_reloader(main_module_name, watch_modules, signal_forks=False):
 """ Don't instantiate a reloader directly. Instead, call this method to get a reloader, and then call `main` on that reloader. See the documentation for `AbstractReloader.main` above to see how to call it. :param main_module_name: The main module name (such as "example_service.standalone"). It should be the value that was passed to the `-m` parameter when starting the Python executable, or `None` if the `-m` parameter was not used. :param watch_modules: If passed an iterable/generator of module names, file watching will be limited to modules whose names start with one of these names (including their submodules). For example, if passed `['example', 'pysoa']`, it will monitor all of PySOA's modules and submodules and all of `example_service`'s modules and submodules, as well as any other modules that start with `example`. If `None`, all files from all modules in all libraries, including Python, will be watched. :param signal_forks: If `True`, this means the server process is actually multiprocessing/forking and its child processes are the actual server processes. In this case, the file watcher also sends `SIGHUP` in addition to `SIGTERM` to the clone process, and the clone process receives this and knows to send `SIGTERM` to all of its forked child processes. :return: a new reloader instance. """

    if USE_PY_INOTIFY:
        return _PyInotifyReloader(main_module_name, watch_modules, signal_forks)
    return _PollingReloader(main_module_name, watch_modules, signal_forks)