Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安排Python程序在给定时间段内休眠 为True时: now=datetime.datetime.now(); 如果now.hour>=22且now.hourRUN_UB: 返回lbok或ubok 其他: 返回lbok和ubok #辅助函数,用于确定距离现在运行的距离 def get_wait_secs(): #获取当前日期时间 cd=datetime.datetime.now() #使用*今天的*跑步创建日期时间 ld=datetime.datetime.combine(datetime.date.today(),运行\u LB) #创建直到*今天*跑步的时间增量 td=ld-cd #忽略td天数(可能为负值),返回td.seconds(始终为正值) 返回td.s 尽管如此: 如果您应该运行(): 打印(“--做点什么--”) 其他: wait_secs=get_wait_secs() 打印(“睡眠%d秒…”%wait_secs) 时间。睡眠(等待秒)_Python_Linux_Unix - Fatal编程技术网

安排Python程序在给定时间段内休眠 为True时: now=datetime.datetime.now(); 如果now.hour>=22且now.hourRUN_UB: 返回lbok或ubok 其他: 返回lbok和ubok #辅助函数,用于确定距离现在运行的距离 def get_wait_secs(): #获取当前日期时间 cd=datetime.datetime.now() #使用*今天的*跑步创建日期时间 ld=datetime.datetime.combine(datetime.date.today(),运行\u LB) #创建直到*今天*跑步的时间增量 td=ld-cd #忽略td天数(可能为负值),返回td.seconds(始终为正值) 返回td.s 尽管如此: 如果您应该运行(): 打印(“--做点什么--”) 其他: wait_secs=get_wait_secs() 打印(“睡眠%d秒…”%wait_secs) 时间。睡眠(等待秒)

安排Python程序在给定时间段内休眠 为True时: now=datetime.datetime.now(); 如果now.hour>=22且now.hourRUN_UB: 返回lbok或ubok 其他: 返回lbok和ubok #辅助函数,用于确定距离现在运行的距离 def get_wait_secs(): #获取当前日期时间 cd=datetime.datetime.now() #使用*今天的*跑步创建日期时间 ld=datetime.datetime.combine(datetime.date.today(),运行\u LB) #创建直到*今天*跑步的时间增量 td=ld-cd #忽略td天数(可能为负值),返回td.seconds(始终为正值) 返回td.s 尽管如此: 如果您应该运行(): 打印(“--做点什么--”) 其他: wait_secs=get_wait_secs() 打印(“睡眠%d秒…”%wait_secs) 时间。睡眠(等待秒),python,linux,unix,Python,Linux,Unix,这段代码应该使我的整个程序在晚上10点睡觉,在凌晨3点醒来。我的问题是。。这样行吗?我试着运行它。。但是我不能改变我的系统/计算机时间。。所以我不能检查。 我发布此问题的原因是因为我的编码使用了datetime.date.tday和datetime.datetime,后者调用当前日期 再次。。我希望我的程序在晚上10点之前运行,在晚上10点到凌晨3点之间睡眠,并在凌晨3点之后重新运行 有人能检查一下这是不是正确的方法吗 考虑(为了清晰起见,需要额外详细): 导入时间、日期时间 #创建时间界限——

这段代码应该使我的整个程序在晚上10点睡觉,在凌晨3点醒来。我的问题是。。这样行吗?我试着运行它。。但是我不能改变我的系统/计算机时间。。所以我不能检查。 我发布此问题的原因是因为我的编码使用了datetime.date.tday和datetime.datetime,后者调用当前日期

再次。。我希望我的程序在晚上10点之前运行,在晚上10点到凌晨3点之间睡眠,并在凌晨3点之后重新运行

有人能检查一下这是不是正确的方法吗

考虑(为了清晰起见,需要额外详细):

导入时间、日期时间
#创建时间界限——程序应在run_LB和run_UB之间运行
RUN_LB=datetime.time(小时=22)#晚上10点
RUN_UB=datetime.time(小时=3)#凌晨3点
#Helper函数来确定当前是否应该运行
def应该运行():
#获取当前时间
ct=datetime.datetime.now().time()
#比较当前运行时间界限
lbok=运行_LB=连续油管
#如果边界覆盖24小时工作日,则使用不同的检查逻辑
如果RUN_LB>RUN_UB:
返回lbok或ubok
其他:
返回lbok和ubok
#辅助函数,用于确定距离现在运行的距离
def get_wait_secs():
#获取当前日期时间
cd=datetime.datetime.now()
#使用*今天的*跑步创建日期时间
ld=datetime.datetime.combine(datetime.date.today(),运行\u LB)
#创建直到*今天*跑步的时间增量
td=ld-cd
#忽略td天数(可能为负值),返回td.seconds(始终为正值)
返回td.s
尽管如此:
如果您应该运行():
打印(“--做点什么--”)
其他:
wait_secs=get_wait_secs()
打印(“睡眠%d秒…”%wait_secs)
时间。睡眠(等待秒)

但我同意睡眠并不是推迟节目开始的最佳方式。您可以查看Windows上的任务计划程序或Linux上的
cron

如果无法更改系统时间,请更改代码中的时间。
如果now.hour>=22和now.hour<3:
将永远不会计算为
True
。使用cron可能会更好,还应该与其他日期时间进行比较,创建开始和结束时间并使用those@jedwards我需要把它改成什么?所以它可以在晚上10点到凌晨3点睡觉?如果我没记错的话,它的睡眠时间也是当天凌晨3点,我想你应该是明天凌晨3点。您可能正在查找
datetime.timedelta
。您可以尝试类似于
sleep\u at=now+datetime.timedelta(hours=6)
我真的不明白您应该运行的部分。。最后一个if和else做什么。。这对最后的while循环有何影响?
should_run()
返回一个布尔值--
True
False
。没有别的了。如果当前时间在
RUN_LB
RUN_UB
范围内,则返回
True
,否则返回
False
。最后一个
if
语句是必需的,以防您以后将边界更改为不包含24小时时钟的值——例如
RUN\u LB=datetime.time(hour=1)
RUN\u UB=datetime.time(hour=5)
——在这种情况下,您需要确保当前时间满足这两个条件。因为您的边界会自动换行,所以只需要满足一个条件。at should_run();方法,它重新运行lbok或ubok else lobk和ubok这是做什么的?lbok=RUN_LB
lbok
ubok
是布尔值
lbok=RUN_LB但是,当边界跨越24小时时,不可能同时满足这两个条件。如果开始时间(下限)为22,结束时间(上限)为3,则不存在>22和<3的时间。因此,我们修改了逻辑。如果某个时间满足任一条件,则认为该时间在22-3个时间范围内。时间必须大于22或小于3。如果某个时间满足这些条件之一,那么它就在我们想要运行的窗口内。因此,在一天结束时,
should_run()
根据我们是否在(开始时间,结束时间)时间范围内返回一个布尔值。
while True:
      now = datetime.datetime.now();
      if now.hour >= 22 and now.hour < 3:
         print "sleep"
         sleep_at = datetime.datetime.combine(datetime.date.today(),datetime.time(3))
         sleep_til = (sleep_at - now).seconds
         print sleep_til
         time.sleep(sleep_til)
         print "wake"
      else:
         print "break"
         break
import time, datetime

# Create time bounds -- program should run between RUN_LB and RUN_UB
RUN_LB = datetime.time(hour=22)     # 10pm
RUN_UB = datetime.time(hour=3)      #  3am

# Helper function to determine whether we should be currently running
def should_run():
    # Get the current time
    ct = datetime.datetime.now().time()
    # Compare current time to run bounds
    lbok = RUN_LB <= ct
    ubok = RUN_UB >= ct
    # If the bounds wrap the 24-hour day, use a different check logic
    if RUN_LB > RUN_UB:
        return lbok or ubok
    else:
        return lbok and ubok


# Helper function to determine how far from now RUN_LB is
def get_wait_secs():
    # Get the current datetime
    cd = datetime.datetime.now()
    # Create a datetime with *today's* RUN_LB
    ld = datetime.datetime.combine(datetime.date.today(), RUN_LB)
    # Create a timedelta for the time until *today's* RUN_LB
    td = ld - cd
    # Ignore td days (may be negative), return td.seconds (always positive)
    return td.seconds


while True:
    if should_run():
        print("--do something--")
    else:
        wait_secs = get_wait_secs()
        print("Sleeping for %d seconds..." % wait_secs)
        time.sleep(wait_secs)