首先,我的代码在这里:
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
循环无限运行。
我知道为什么。但我不知道如何解决它。
任何人都可以帮助我吗?
答案 0 :(得分:2)
这个怎么样?
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()
。
答案 1 :(得分:1)
我确信有更好的方法,但是如果只将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())
我没有测试过这段代码,但我认为它应该可行。祝你好运。