代码之家  ›  专栏  ›  技术社区  ›  Emad Helmi

Python计划,并行执行任务

  •  1
  • Emad Helmi  · 技术社区  · 8 年前

    我已使用 this :

    if __name__ == '__main__':
        channel_crawler(priority=1)
        schedule.every(PRIORITY[1]["interval"]).minutes.do(channel_crawler, priority=1)
    
        schedule.every().day.at("17:30").do(distance_fixer)
    
        while True:
            schedule.run_pending()
            time.sleep(1)
    

    channel_crawler 大约需要 5 minutes 运行和 distance_fixer 大约需要 5 hours . 当我在运行 距离固定器 ,计划不运行 channel\u爬虫程序 每一个 10 minutes . 如何并行运行函数?

    1 回复  |  直到 8 年前
        1
  •  6
  •   patpat    8 年前

    可以对作业使用多处理,以便每个进程运行每个函数

    def run_schedule():
        while True:
            schedule.run_pending()
            time.sleep(1)
    
    def run_crawler_schedule():
        channel_crawler(priority=1)
        schedule.every(PRIORITY[1]["interval"]).minutes.do(channel_crawler, priority=1)
        run_schedule(schedule)
    
    def run_fix():
        schedule.every().day.at("17:30").do(distance_fixer)
        run_schedule()
    
    
    def run_job()
        p = Process(target=run_crawler_schedule)
        c = Process(target=run_fix)
        p.start()
        c.start()
        p.join()
        c.join()
    
    if __name__ == "__main__":
        run_job()