def run(self):
global existed_urls_list<EOL>config = config_creator()<EOL>debug = config.debug<EOL>main_thread_sleep = config.main_thread_sleep<EOL>branch_thread_num = config.branch_thread_num<EOL>while <NUM_LIT:1>:<EOL><INDENT>url = self.main_queue.get()<EOL>if debug:<EOL><INDENT>print('<STR_LIT>'.format(url))<EOL><DEDENT>main_spider = self.main_spider(url)<EOL>sleep(random.randrange(*main_thread_sleep))<EOL>links = main_spider.request_urls()<EOL>try:<EOL><INDENT>assert type(links) in VALIDATE_URLS<EOL><DEDENT>except AssertionError:<EOL><INDENT>error_message('<STR_LIT>')<EOL>links = list()<EOL><DEDENT>branch_queue = queue.Queue(branch_thread_num)<EOL>for i in range(branch_thread_num):<EOL><INDENT>branch_thread = BranchThread(branch_queue=branch_queue,<EOL>branch_spider=self.branch_spider)<EOL>branch_thread.daemon = True<EOL>branch_thread.start()<EOL><DEDENT>for link in links:<EOL><INDENT>if link not in existed_urls_list:<EOL><INDENT>existed_urls_list.append(link)<EOL>branch_queue.put(link)<EOL><DEDENT><DEDENT>branch_queue.join()<EOL>if debug:<EOL><INDENT>print('<STR_LIT>'.format(url))<EOL><DEDENT>self.main_queue.task_done()<EOL><DEDENT>
run your main spider here, and get a list/tuple of url as result
        then make the instance of branch thread

        :return: None