计划python脚本重新启动或使用新参数重新初始化对象

问题描述 投票:5回答:1

我有一个程序,它将以24/7的速度运行,从相机获取帧,进行处理并通过本地网络发送.jpg图像。通常,我不希望将视频保存到任何文件,但是,我可能希望在某些情况下安排x分钟的保存(未触发,已安排)。

我通过将VideoWriter作为VideoCamera的线程来处理视频录制。我发现这对于以正确的fps处理书写更为准确。当我想从头开始录制以及只想流式传输时,此过程可以完美地工作。我像这样启动相机。

import ...
# from custom file import `VideoCamera` which has access to `VideoWriter`
from camera import VideoCamera

video_camera = VideoCamera(
    flip = False, 
    usePiCamera = False, 
    resolution = (640, 480),
    record = False,
    record_duration = None,
    record_timestamp = True
    ) 

无法将相机初始化两次(无法访问同一相机两次)。因此,我正在考虑安排停止并使用新参数(例如record = True, record_duration = "00:10:00")重新启动。

我从控制台(python main.py)调用脚本,该控制台具有:

if __name__ == '__main__':
    t = threading.Thread(target=processing_fun, args=())
    t.daemon = True
    t.start()
    print("To see feed connect to " + get_ip_address() + ":5000")
    # to do, read ifconfig and assign IP using raspberry's IP
    app.run(host='0.0.0.0', port = 5000, debug=False)

processing_fun如果我执行del(video_camera),将会死,因为它需要来自相机的帧。流也一样。我不确定是否可以在不中断线程的情况下删除相机。

解决问题的思路

我正在考虑一种方法

  1. 不进行记录的video_camera的初始化
  2. 在给定的时刻,干净地停止main.py(或者,如果不可能的话,将其杀死)
  3. 使用video_camera的新参数重新启动main.py
    • 这可能涉及保存cam_config文件,我很好用
  4. 按所需时间表重复3)和4)>
  5. 我寻求帮助的地方

我看过herehere,但不确定如何按计划将它们放在一起。

我有一个程序,它将以24/7的速度运行,从相机获取帧,进行处理并通过本地网络发送.jpg图像。通常,我不希望将视频保存到任何文件,但是我可能希望...

python bash subprocess scheduled-tasks
1个回答
2
投票

您可以使用crontab来安排脚本,并且提到您还可以使用crontab杀死脚本。您可以创建startup.sh脚本和某种shutdown.sh来管理您的日程安排。

© www.soinside.com 2019 - 2024. All rights reserved.