如何在特定时间之间暂停或停止python程序(不基于运行时间!)

如何在特定时间之间暂停或停止python程序(不基于运行时间!),python,python-3.x,python-multithreading,scheduling,exit,Python,Python 3.x,Python Multithreading,Scheduling,Exit,我试图找到一种让python程序持续运行的方法,但要确保主脚本仅在夜间处于“活动”状态(例如,在21:30和04:30之间) 背景:我的程序记录运动激活视频并激活泛光灯 主要节目段如下: …我现在每天晚上都在运行这个程序,然后在早上用Ctrl-C进行杀戮 try: signal.signal(signal.SIGHUP,SigHandler) # proper exit for SIGHUP (terminal hangups) while GPIO.input(PIR_PIN)==1: #

我试图找到一种让python程序持续运行的方法,但要确保主脚本仅在夜间处于“活动”状态(例如,在21:30和04:30之间)

背景:我的程序记录运动激活视频并激活泛光灯

主要节目段如下:

…我现在每天晚上都在运行这个程序,然后在早上用Ctrl-C进行杀戮

try:

signal.signal(signal.SIGHUP,SigHandler) # proper exit for SIGHUP (terminal hangups)

while GPIO.input(PIR_PIN)==1: # Loop until PIR output is stabilised at 0
    pass

GPIO.add_event_detect(PIR_PIN, GPIO.RISING, callback=MotionDetected)

signal.pause() #pauses main program forever & waits for PIR Rising Edge unless interrupted

except KeyboardInterrupt:
    print("")

finally:
    GPIO.output(16, GPIO.LOW) #floodlight off
    GPIO.cleanup()
是否有一种方法可以定期检查并行线程中的时间,如果时间在某个小时之间,则暂停程序

如果我在try语句之前添加thread语句,下面发布的解决方案是否适用于我的程序

首先,创建一个cron作业(我相信您使用Linux是因为GPIO调用),每天晚上21:30启动脚本

3021***python/path/to/python/script

然后,在4:30创建第二个cron作业,以终止运行程序的任何现有进程

30 4***pkill-f/path/to/python/script需要编辑为实际运行的进程名。


通常情况下,它应该在操作系统级别处理。时间模块和时间。sleep()是您所需的工具,这里是一个完整的tuto@Cyber技术,它无法工作,因为主线程暂停并等待事件。它无法同时检查等待输入的时间。谢谢@jarcobi889。是的,Linux操作系统。我将进一步探讨cron方法,但是这里的问题/挑战是使用kill命令让程序优雅地退出。(即,关闭泛光灯,如果已经在录制视频,则完成录制,并在退出前清除GPIO状态)对此方法有何想法?您可以使用该模块检测终止中断,并使用该模块设置最终状态,如完成视频录制并在退出前关闭泛光灯。谢谢-如果成功,将进一步探索该模块并在此处发布最终代码:-)