前提・実現したいこと
下記のコードは並行処理のthreadingで書かれていますが、並列処理のmultiprocessingに変更したいです。ソースコードの修正点を教えてください。
該当のソースコード
import tkinter as tk from tkinter import messagebox import datetime import time import threading from multiprocessing import Process class Timer: def __init__(self): global buffer self.root = tk.Tk() self.label = tk.Label(self.root) self.label["font"] = ("Helvetica", 150) self.root.state('zoomed') self.label.pack(anchor = 'center', expand = 1) self.key = " " def print_key(self, event): self.key = event.keysym if self.key == "Left": self.key = "☜" elif self.key == "Right": self.key = "☞" elif self.key == "space": self.key = "Rest" elif self.key == "Return": self.key = "Finish" else: self.key = " " def on_closing(self): if messagebox.askokcancel("Quit", "Do you want to quit?"): self.root.destroy() def changeLabelText(self): nStart = time.time() pass_time = int(time.time() - nStart) while True: if pass_time == 1: self.label["text"] = "3" elif pass_time == 2: self.label["text"] = "2" elif pass_time == 3: self.label["text"] = "1" elif pass_time == 4: self.label["text"] = "START" else: self.label["text"] = self.key self.label.bind('<Key>', self.print_key) self.label.focus_set() self.root.protocol("WM_DELETE_WINDOW", self.on_closing) pass_time = int(time.time() - nStart) # if __name__ == "__main__": timer = Timer() thread = threading.Thread(target=timer.changeLabelText) thread.start() #timer.root.protocol("WM_DELETE_WINDOW", timer.on_closing) timer.root.mainloop()
試したこと
thread = threading.Thread(target=timer.changeLabelText)のthreading.Threadをmultiprocess.Processに変換とQueueの設定をしてみたが、設定がうまくいかず動作しなかった。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/09 08:28
2020/12/09 09:19
2020/12/09 10:17
2020/12/09 10:30