<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run_with_gunicorn(self, **options):
 """Run with gunicorn."""

        import gunicorn.app.base
        from gunicorn.six import iteritems
        import multiprocessing

        class GourdeApplication(gunicorn.app.base.BaseApplication):

            def __init__(self, app, options=None):
                self.options = options or {}
                self.application = app
                super(GourdeApplication, self).__init__()

            def load_config(self):
                config = dict([(key, value) for key, value in iteritems(self.options)
                               if key in self.cfg.settings and value is not None])
                for key, value in iteritems(config):
                    self.cfg.set(key.lower(), value)

            def load(self):
                return self.application

        options = {
            'bind': '%s:%s' % (self.host, self.port),
            'workers': self.threads or ((multiprocessing.cpu_count() * 2) + 1),
            'debug': self.debug,
            **options,
        }
        GourdeApplication(self.app, options).run()