【问题标题】:Python schedule "Time is freezing"Python时间表“时间冻结”
【发布时间】:2021-04-28 17:37:52
【问题描述】:

我正在使用 schedule 来执行与实时 datetime.datetime.now() 一起使用的功能。 但是当调用函数 datetime.datetime.now() 时,我总是得到开始时间 schedule 脚本。

例子:

import schedule
import time
import datetime


schedule.every(2).minutes.do(print, datetime.datetime.now().strftime("%d-%m-%Y %H:%M"))


while 1:
    schedule.run_pending()
    time.sleep(1)

示例结果:

28-04-2021 19:59
28-04-2021 19:59
28-04-2021 19:59
28-04-2021 19:59

有没有人知道如何在调度程序的执行过程中获得实时?

Python => 3.8
schedule => 1.1.0

【问题讨论】:

    标签: python python-3.x datetime schedule


    【解决方案1】:

    这是因为now() 的返回值保存在内存中。传递一个 lambda 或函数以确保它是动态计算的:

    import schedule
    import time
    import datetime
    
    schedule.every(2).minutes.do(
        lambda: print(datetime.datetime.now().strftime("%d-%m-%Y %H:%M"))
    )
    
    while 1:
        schedule.run_pending()
        time.sleep(1)
    

    【讨论】:

    • 我还有很多东西要学,还有很多要理解。谢谢!
    • 没问题!我时常犯类似的错误。
    【解决方案2】:

    这是因为now 的值已经加载到内存中。

    试试这个

        import schedule
    import time
    import datetime
    
    schedule.every(2).minutes.do(print, datetime.datetime.now().strftime("%d-%m-%Y %H:%M"))
    
    
    while 1:
        schedule.run_pending()
        time.sleep(1)
    

    【讨论】:

    • 我也是这么想的,并测试了这个选项。行为是一样的。
    猜你喜欢
    • 2015-12-30
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2013-10-06
    相关资源
    最近更新 更多