阻止root.mainloop()执行Python的无限循环



嘿,伙计们,这可能很愚蠢,但我就是找不到解决办法……我试图每天间隔运行我的python代码,并使用时间表来执行。然而,它阻止了root.mainloop()的访问,因为之前有一个无限循环。这是网站https://pypi.org/project/schedule/如果有更好的方法";时间表";我的代码将在特定的时间、特定的日子运行,我将不胜感激!这是下面的示例代码。

def job():
print("I am doing this job!")

schedule.every().monday.at("11:21").do(job)
schedule.every().tuesday.at("14:00").do(job)
schedule.every().wednesday.at("22:00").do(job)
schedule.every().thursday.at("14:00").do(job)
schedule.every().friday.at("14:00").do(job)
while True:
schedule.run_pending()
time.sleep(1)

root.mainloop()

谢谢!

官方文档中有一个在子线程中运行while循环的示例。

下面是另一个简单的例子:

import threading
...
def check_schedule():
while True:
schedule.run_pending()
time.sleep(1)
threading.Thread(target=check_schedule, daemon=True).start()
root.mainloop()

如果job()不是长时间运行的任务,则可以使用after()而不是while循环:

...
def check_schedule():
schedule.run_pending()
root.after(1000, check_schedule)
check_schedule() # start the loop
root.mainloop()

最新更新