일정에 따라 특정 시간에 켜고 끄는 램프가 많이 있습니다. 예를 들어 아침에 일정을 시작하면 모든 램프가 켜지고 중지됩니다 밤에는하지만 임의의 시간에 멈추고 다시 켜야하는 램프가 있습니다. APScheduler 같은 파이썬 패키지를 사용해 보았지만 특정 작업 (이 경우 램프)을 중지했다가 다시 시작할 수있는 기능이 없습니다.Python - 작업을 중지하고 다시 시작하는 기능으로 스케줄링
이 question 피클을 사용하여 멈추고 다시 시작하는 방법을 사용하지만이 방법을 구현하는 방법을 모르겠습니다.이를 해결할 방법이 있습니까?
미리 감사드립니다. 나쁜 문구는 유감스럽게 생각합니다. 여기 --UPDATE--
는이 코드를 잘 모르겠어요, 간단한 구현입니다.
from datetime import datetime
from time import sleep
class Scheduling:
def __init__(self):
self.lamp = {}
def run(self, lamp_id, start, finish):
"""Called one-time only for each lamp"""
self.lamp[lamp_id] = (start, finish)
while True:
if datetime.now().strftime('%H:%M:%S') == start:
sleep(1)
print 'SET LAMP %s ON' % lamp_id
elif datetime.now().strftime('%H:%M:%S') == finish:
sleep(1)
print 'SET LAMP %s OFF' % lamp_id
def stop(self, lamp_id):
print 'SET lamp %s OFF' % lamp_id
def resume(self, lamp_id):
print 'SET lamp %s ON' % lamp_id
finish = self.lamp[lamp_id][1]
while True:
if datetime.now().strftime('%H:%M:%S') == finish:
print 'SET lamp %s OFF' % lamp_id
if __name__ == '__main__':
schedule = Scheduling()
schedule.run(1, '00:00:00', '00:01:00')
맞아요, 간단한 구현을 썼지 만, 내 프로세서를 실행하는이 스크립트가 거의 하나의 램프에 대해 60 %의 사용률을 얻었을 때 이것이 좋지 않다고 생각합니다. – Kyomuu
외부 저장 장치 메커니즘 (DB, csv, yaml 등)을 사용하여 모든 예약 된 이벤트를 기록하고 프로세스가 마지막으로 다른 파일에서 실행 된 기록을 유지 한 다음 마지막 실행 시간 및 구성 파일의 현재 시간 그런 다음 매 15 분마다 또는 매시간마다 프로세스를 실행하도록 OS를 예약 할 수 있습니다. –