I have this following code where I am calling the function from the button which takes input from the widgets. It's a function which takes about 4 minutes to run and for solving the 'not responding' problem of tkinter window, I want to get the func process running on the different core and terminate as it can be called again via the application running on mainloop with a different argument. I read the documentation of multiprocessing and Pool seemed to be the choice here but I don't know how to frame it here. Tried a few things with error.
class database(tk.Tk):
    def __init__(self, *args, *kwargs):
        tk.Tk.__init__(self, *args, **kwargs):
        container= tk.Frame(self, width=1000, height=1000)
        container.pack(side="top", fill="both", expand= True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)
        self.frames = {}
        for F in ( msPage):      #many more pages here
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")
        self.show_frame(msPage)
    def show_frame(self,cont):
        frame = self,frames[cont]
        frame.tkraise()
def MarkS(msVar):
    ms.func(msVar.get())       # func takes about 4 mins
class msPage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        msVar = StringVar()
        msCal = Calendar(self, selectmode='day'
textvariable=msVar).pack(fill="both", expand=True)
        # button2 calls MarkS
        button2 = ttk.Button(self,
                             text="Get Data",
                             command=lambda: MarkS(msVar)).pack(pady=30, padx=10)                
app = database()
app.geometry("1066x568")
app.minsize(width=670, height=550)
app.mainloop()