raspberry piでゴミの日をお知らせするプログラムを作りたいと
考えているのですが、時間になる前に(実行した瞬間に)what_garbage_day関数が
実行されてしまします。
そして、pythonコードだけで、(外部プログラムを使わないで)スケジュール実行される
このプログラムを何とかしたいのですが、どうしたらよいでしょうか?
python
1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3 4# ++++ モジュール ++++ 5import threading 6from datetime import datetime 7import sched 8import time 9 10# ++++ グローバル変数 +++++ 11call_time = "22:22:05" 12 13# ++++ 関数 +++++ 14class GarbageDayReminder: 15 def what_garbage_day(self): 16 print("今日は何のゴミの日") 17 18 # 指定時間に動作する関数 19 def specified_time(self): 20 # 変数 21 format_day = "%Y/%m/%d-" 22 format_time = "%H:%M:%S" 23 24 # format_timeだと日付が1990-1-1になるため現在の日付を代入する 25 now = datetime.now() 26 now_date = now.strftime(format_day) 27 28 # 指定時間を代入する 29 run = datetime.strptime(now_date + call_time, format_day + format_time) 30 run = int(time.mktime(run.utctimetuple())) 31 32 # スケジューラー 33 scheduler = sched.scheduler(time.time, time.sleep) 34 35 # 実行される関数を指定 36 scheduler.enterabs(run, 1, self.what_garbage_day) 37 scheduler.run() 38 39 # ++++ 動作 +++++ 40if __name__ == '__main__': 41 # GarbageDayReminderをインスタンス化 42 garbageDayReminder = GarbageDayReminder() 43 44 # スレッドで指定時間動作関数を動かす 45 t = threading.Thread(target = garbageDayReminder.specified_time) 46 t.start() 47 48 print("スレッド動作確認用")
回答2件
あなたの回答
tips
プレビュー