def _init_threading(self, function, params={}, num_threads=10):
        """
        Initialize queue and threads

        :param function:
        :param params:
        :param num_threads:
        :return:
        """
        q = Queue(maxsize=0) # TODO: find something appropriate
        for i in range(num_threads):
            worker = Thread(target=function, args=(q, params))
            worker.setDaemon(True)
            worker.start()
        return q