'Stores all registered handlers in a queue for processing'

def fire(self, *args, **kwargs):

    self.queue = Queue()
    result = {}
    if self.handlers:
        max_threads = (1 if kwargs.get('event_order_lock') else self._threads())
        def add_to(key, value):
            result[key] = value
        kwargs['event_add_to_result'] = add_to
        for i in range(max_threads):
            t = threading.Thread(target=self._execute, args=args, kwargs=kwargs)
            t.daemon = True
            t.start()
        handler_keys = self.handlers.keys()
        handler_keys.sort(key=natsortKey)
        for handler in handler_keys:
            self.queue.put(handler)
            if self.asynchronous:
                (handler_, memoize, timeout) = self.handlers[handler]
                result[handler] = (None, None, handler_)
        if (not self.asynchronous):
            self.queue.join()
    return result
