Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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 将脚本暂停到某个特定时间,然后在另一个特定时间重新开始_Python_Python 3.x_Raspberry Pi3 - Fatal编程技术网

Python 将脚本暂停到某个特定时间,然后在另一个特定时间重新开始

Python 将脚本暂停到某个特定时间,然后在另一个特定时间重新开始,python,python-3.x,raspberry-pi3,Python,Python 3.x,Raspberry Pi3,我在我的raspberry pi 3上做了一个RGB LED颜色改变脚本用于我的设置,但我想让它在晚上11点停止,并在上午9点重新开始。我怎样才能做到这一点? 非常感谢。 PhantomX使用python中的time库,有一个time.localtime()函数将当前时间作为结构返回 您可以检查时间为23小时(晚上11点),然后关灯,然后让它睡眠36000秒(10小时),然后再打开灯 或者,每隔几分钟检查一次时间为上午9点,如果脚本可能在夜间重新启动,请打开灯 例如: import time

我在我的raspberry pi 3上做了一个RGB LED颜色改变脚本用于我的设置,但我想让它在晚上11点停止,并在上午9点重新开始。我怎样才能做到这一点? 非常感谢。
PhantomX

使用python中的
time
库,有一个
time.localtime()
函数将当前时间作为结构返回

您可以检查时间为23小时(晚上11点),然后关灯,然后让它睡眠36000秒(10小时),然后再打开灯

或者,每隔几分钟检查一次时间为上午9点,如果脚本可能在夜间重新启动,请打开灯

例如:

import time

while True:
    if time.localtime().tm_hour == 23:
        lights_off()
        time.sleep(3600) # No need to check for at least 1 hour
    elif time.localtime().tm_hour == 9:
        lights_on()
        time.sleep(3600)
    time.sleep(60) # Checks every  minute

时间文档:

这是一个更具幂等性的解决方案,无论何时启动脚本或脚本中断,都可以确保灯光处于正确的状态

from datetime import time, datetime
from time import sleep

morning = time(9,0,0)
evening = time(23,0,0)

while True:

    while morning < datetime.now().time() < evening:
        print 'lights on...'
        sleep(1)

    print 'lights off...'
    sleep(1)
from datetime导入时间,datetime
从时间上导入睡眠
上午=时间(9,0,0)
晚上=时间(23,0,0)
尽管如此:
上午
Hi。通过快速的谷歌搜索,我发现树莓有一个crontab。我想使用cron进行设置要比在脚本中进行设置容易得多。当涉及到检查时间时,如果您希望在轮询时时间正好是某个特定值,则可能会发生许多失败案例。检查它是否在X和Y边界内,并根据当前值执行操作更安全。@约翰尼在这种情况下,它正在寻找一个小时值,在60分钟的窗口内,每隔一分钟或两分钟检查一次应该不会有太多错误。同意,但仍然是错误的做法。@Johnny出于好奇,为了将来更好地练习,哪一个界限适用于像这里这样的场景?pi控制我水族馆的灯光。晚上10:30到11:30之间停电。我错过了晚上11点的“关闭”投票,所以他们重新开始,直到我在早上9点再次投票,那时他们比预期的时间多了10个小时。早上9点时,触发器再次(!)显示“打开灯”,因此现在灯会再亮12小时。这将导致晒伤、漂白和珊瑚死亡。因此,虽然为true,但我每X秒轮询一次,看看时间是否在上午9点到晚上11点之间:如果是,lights_on()。如果时间在晚上11点到上午9点之间,则熄灯()。简单的问题,安全的解决方案。