前提・実現したいこと
Raspberry Pi 3
Python3
Tkinter
を使用して、時計表示するアプリケーションを作成していますが、長時間の動作でフリーズしてしまい困っております。
どうかアドバイスを頂けないでしょうか?
発生している問題・エラーメッセージ
1日中動作させていると、Raspberry Piのメモリの使用量がいっぱいになりフリーズしてしまいます。
該当のソースコード
Python3
1class GUI(tkinter.Frame): 2 # ==================================== 3 # 初期化 4 # ==================================== 5 def __init__(self, master = None): 6 super().__init__(master) 7 8 #------------------------ 9 # 日時表示 10 #------------------------ 11 self.now = datetime.datetime.now() 12 self.Date_label = tkinter.Label(master, text = self.now.strftime('%Y年 %m月 %d日 %H:%M:%S')) 13 self.Date_label.place(x=DATEPOSX, y=DATEPOSY) 14 15 #------------------------ 16 # 定期処理開始 17 #------------------------ 18 self.timeEvent() 19 20 # ==================================== 21 # タイマー起動用関数 22 # ==================================== 23 def timeEvent(self): 24 th1 = threading.Thread(target = self.update_clock) # スレッドインスタンス生成 25 th1.start() # スレッドスタート 26 try: 27 self.after(1000, self.timeEvent) # ここで、再帰的に関数を呼び出す(1秒毎) 28 except: 29 pass 30 31 # ==================================== 32 # 日時更新処理タスク 33 # ==================================== 34 def update_clock(self): 35 self.now = datetime.datetime.now() 36 self.Date_label["text"] = self.now.strftime('%Y年 %m月 %d日 %H:%M:%S') 37 self.update() 38 39# ==================================== 40# メイン処理 41# ==================================== 42if __name__ == "__main__": 43 gui = tkinter.Tk() # .Tk class instance 44 app = GUI(master = gui) 45 app.mainloop()
試したこと
原因調査の為、ラベルに時刻を1秒間隔で表示するだけのシンプルなもの(上記ソースコード)を作成しましたが、
ラベルに時刻を代入するだけでメモリ使用量が増加していきます。
メモリの使用量の増加は、Raspberry PiのタスクマネージャーのPython3のRSSで確認しています。
またフリーズ直前では、タスクマネージャーのメモリ使用量がRaspberry Piのメモリ容量いっぱいになります。
補足情報(FW/ツールのバージョンなど)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。