【发布时间】:2018-03-08 23:45:47
【问题描述】:
所以我一直在调整日程安排,终于让它发挥作用。我太兴奋了,无法意识到还有另一个问题哈哈。但是现在的问题是,只要主体完成,它就不会结束,我真的找不到解决方案。我知道问题出在 Time.sleep(1) 行上,因为每当我使用keyboardInterrput 时都会出现错误提示 Time.sleep(1) 是 "Issue" 并且我真的找不到解决办法来结束它。
我正在使用来自 github 的时间表:Github schedule
while True:
UserInput = input('To run Schedule task - Press y\nTo run directly - Press n\n')
if(UserInput == 'y' or UserInput == 'Y'):
print(Fore.RESET + space)
TimeUser = input('What time to start script? Format - HH:MM\n')
schedule.every().day.at(TimeUser).do(main)
wipe()
print('Schedule starts at: ''' + TimeUser + ' - Waiting for time...')
idle = int(round(schedule.idle_seconds()))
while True:
schedule.run_pending()
time.sleep(1)
idle = int(round(schedule.idle_seconds()))
if(idle < 6.0) and (idle >= 0.0):
print('Starting in: ' + str(idle))
elif(UserInput == 'n' or UserInput == 'N'):
main()
print("Wrong input - Try again")
【问题讨论】:
-
while True:意味着永远重复 - 这就是它正在做的事情。你可以使用break来逃避它 -
非常正确。我试图在 While 内的 if 语句之后休息一下,但是打印不会继续。我也在 While 语句之后尝试了一些东西。所以我的结构有些问题。
-
@Stael 调度库需要那个繁忙的循环。这里真正的问题是 OP 如何在不阻塞的情况下运行那个繁忙的循环,该库文档中的答案是:run it in another thread。如果他中断,计划任务将无法完成。
-
哦该死的。你发现了一些非常好的东西@PauloScardine 你可能有我的解决方案吗?
-
我愿意,但我现在没有时间发布完整的答案。如果没有人先发布一个像样的答案,那么今晚我会在塞进我的男孩后看看......
标签: python multithreading scheduled-tasks deadlock sleep