コード例 #1
0
ファイル: posts.py プロジェクト: zhusijia/junior_spider
def wait_tasks_done(pool):
    for t in pool:
        if not t.isAlive():
            pool.remove(t)
        else:
            t.join()


if __name__ == "__main__":
    tick_start = time.time()
    pool = []

    while True:
        # Get a topic to grab its content
        topic = mysql_mgr.dequeue_topic()

        if topic is None:
            wait_tasks_done()
            exit(1)

        task = Thread(target=post_crawl_task, args=(topic, ))
        task.start()
        pool.append(task)

        if len(pool) == max_threads:
            wait_tasks_done(pool)
            dur_task_run = time.time() - tick_start
            if dur_task_run < interval:
                time.sleep(interval - dur_task_run)
            tick_start = time.time()