title: Multiprocessing in Tkinter
body: <p>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.</p>
  
  <pre><code>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()
  </code></pre>