Python调度 - 如何避免无限循环



首先,我的代码在这里:

import schedule # see https://github.com/dbader/schedule
import crawler
def job():
    print("Start my scheduled job...")
    cw.run()
if __name__ == "__main__":
    cw = crawler.crawler()
    print("Initial crawling...")
    cw.run()
    schedule.every(10).seconds.do(job)
    while True:
        schedule.run_pending()
        for title, link in zip(cw.titles, cw.links):
            print("%s[%s]" % (title, link))

while循环中,我只想在预定作业完成后才执行for循环。

但是,for环路正在无限运行。

我知道为什么。但是我不知道如何修复它。

任何人可以帮我吗?

这个

怎么样?
def job():
    print("Start my scheduled job...")
    cw.run()
    for title, link in zip(cw.titles, cw.links):
        print("%s[%s]" % (title, link))
if __name__ == "__main__":
    cw = crawler.crawler()
    print("Initial crawling...")
    cw.run()
    schedule.every(10).seconds.do(job)
    while True:
        schedule.run_pending()

我刚将for循环移至job()

我确定有更好的方法,但是只将for循环放入函数中,然后将schedule.run_pending()作为虚拟参数传递到其中。这样:

def foo(dummy):
    for title, link in zip(cw.titles, cw.links):
        print("%s[%s]" % (title, link))
while True:
    foo(schedule.run_pending())

我尚未测试此代码,但我认为它应该起作用。祝你好运。

最新更新