Aynı thread'i birkaç kez çalıştırma

import tkinter as tk
from time import sleep
import threading


def yazdir():
    print('merhaba dunya')


window = tk.Tk()
window.title("window")
window.geometry("300x200")

b_ngrokStart = tk.Button(window, text="print",
                         command=lambda: ngrok_port_t.start())
b_ngrokStart.pack(fill=tk.BOTH, expand=True, padx=2, pady=2)

ngrok_port_t = threading.Thread(target=yazdir)
window.mainloop()

Yukarıdaki kodu çalıştırdığımda şöyle bir pencere oluşturuyorum;

image

Butona ilk tıklatışımda olması gereken çıktıyı alabiliyorum;

merhaba dunya

Fakat ikinci kez tıklayışımda:

RuntimeError: threads can only be started once

hatasını alıyorum.

Anladığım kadarıyla her thread bir kez çalıştırılabiliyor.

Aynı thread’i birden fazla kez nasıl çalıştırabilirim?

Thread’leri bir değişkene atamaktansa oluşturduğunuz anda başlatmak güzel bir çözüm olacaktır.
Yani,

ngrok_port_t = threading.Thread(target=yazdir)
ngrok_port_t.start()

yapmaktansa,
şöyle yapılabilir,

threading.Thread(target=yazdir).start()

Sonuç olarak,

b_ngrokStart = tk.Button(window, text="print",
                         command=lambda: threading.Thread(target=yazdir).start())
b_ngrokStart.pack(fill=tk.BOTH, expand=True, padx=2, pady=2)

window.mainloop()
3 Beğeni

Çok teşekkürler, işe yaradı.

2 Beğeni