Параллельное выполнение функций на Python 3

Цель: Сделать небольшой кликер (По типу знаменитого Cookie Clicker)
Проблема: Хочется добавить некое "Улучшение", которое позволит пассивно получать прибавку к общему счету раз в несколько секунд. time.sleep не подходит, поскольку программа зависает, а цикл должен идти в течении всей игры. Пробовал несколько методов, но столкнулся с проблемой несовместимости с Python 3.

Возможно стоит применить отдельный поток для пассивного заработка, но мне кажется, что в дальнейшем, при дополнительной покупке улучшений, или одновременном начислении пассивного дохода + клика, программа не будет должным образом функционировать.

Код прилагаю, в самом коде используется time.sleep, но при нажатии на улучшение - программа зависает.

from tkinter import *
import  time
from threading import *

tk = Tk()
tk.title('Clicker')
tk.geometry("1000x550")
n = 0
g = 0

def nplus():
    global n
    n = n + 1
    label['text'] = str(n) + ' заработанные монеты'
         
def nsbros():
    global n
    global g
    if n>=1:
        n = n - 50
        g = g + 1
        nsup()

def nsup():
    global n
    global g
    while True:
        if g >= 1:
            n = n + (g * 2)
            label['text'] = str(n) + ' заработанные монеты'
            time.sleep(5)
            nsup()



btn1 = Button(text="+Монета", background="#000", foreground="#fff",
             padx="20", pady="8", font="16", command=nplus)
btn1.pack()

label = Label(tk, text='Зарабатывай монеты', font=('Helvetica 50'))
label.pack()

btn2 = Button(text="Увеличить заработок (-50 Монет)", background="#000", foreground="#fff",
             padx="20", pady="8", font="16", command=nsbros)
btn2.pack()


window = Label(text = 'Сколько ты заработаешь монет?', font = ('Arial', 16, 'bold'))
window.place(x = 180, y = 150)
window.pack()


mainloop()


Ответы (0 шт):