Python Verison 3.7 |NPM версия 6.2.0 |Пакет Google Lighthouse версии 4.0.0
Я пытаюсь создать довольно простое окно Tkinter для автоматизации пакета NPM Google Lighthouse, но мне не удается остановить поток.
Нить:
lighthouse_thread = threading.Thread(target=start_lighthouse)
И кнопка запуска потока:
Start_Ligthouse = Button(root, text="Starten", command=lighthouse_thread.start)
Start_Ligthouse.place(x=850, y=312)
Start_Ligthouse.config(state=DISABLED)
root.after(100, CheckInOut)
Функция выглядит следующим образом:
def start_lighthouse():
global filenumber
global reportlocation
global instantkill
global file
Start_Ligthouse.config(state=DISABLED)
for url in file:
url = url.rstrip("\n")
print(url)
filename = url.replace("https","").replace("/","-").replace("\n","").replace(":","").replace("--","")
if os.path.isfile(reportlocation + "/" + filename + ".html"):
print("EXISTS!")
filenumber = 2
while True:
newfilename = filename + "{}".format(filenumber)
if not os.path.isfile(reportlocation + "/" + newfilename + ".html"):
filename = newfilename
break
filenumber += 1
if instantkill:
break
#os.system("lighthouse --disable-device-emulation --throttling-method=provided --preset=perf --quiet --output-path={}/{}.html {}".format(reportlocation,filename,url))
CheckIn = False
CheckOut = False
print("LoopEnded")
Я прокомментировал команду os.system, чтобы быстро бегать по списку.Если бы мне пришлось снова вызывать функцию, я получаю ошибку, что поток не может быть запущен дважды (что я понимаю). Но, насколько я понял, поток должен завершиться после завершения функции.
Мой вопрос: как я могу завершить поток после того, как он завершил то, что должен был сделать?
Полный код можно найти здесь