Multiprocesamiento en Python tkinter

¿Cómo ejecutar múltiples procesos en python sin multithreading? Por ejemplo, considere el siguiente problema:

Tenemos que hacer una Gui, que tiene un botón de inicio que inicia una función (por ejemplo, imprime todos los enteros) y hay un botón de parada, de modo que al hacer clic en él se detiene la función.

¿Cómo hacer esto en Tkinter?

Luego debe vincular el widget de Button con la función que inicia el hilo de trabajo. Por ejemplo:

 import time import threading import Tkinter as tk class App(): def __init__(self, root): self.button = tk.Button(root) self.button.pack() self._resetbutton() def _resetbutton(self): self.running = False self.button.config(text="Start", command=self.startthread) def startthread(self): self.running = True newthread = threading.Thread(target=self.printints) newthread.start() self.button.config(text="Stop", command=self._resetbutton) def printints(self): x = 0 while self.running: print(x) x += 1 time.sleep(1) # Simulate harder task 

Con el enfoque de self.running , puede terminar el hilo con gracia solo cambiando su valor. Tenga en cuenta que el uso de varios subprocesos sirve para evitar el locking de la GUI mientras se ejecutan los printints .

He leído esta pregunta anterior y supongo que por qué solicitó explícitamente aquí una solución sin subprocesos múltiples. En Tkinter, esta solución se puede utilizar en un escenario donde los otros subprocesos tienen que comunicarse con la parte de la GUI. Por ejemplo: rellenar una barra de progreso mientras se renderizan algunas imágenes.

Sin embargo, como se ha señalado en los comentarios, este enfoque es demasiado complejo solo para imprimir números.

Aquí puedes encontrar mucha información y más ejemplos sobre Tkinter.


Editar:

Ya que su nueva pregunta ha sido cerrada, cambiaré el código aquí para aclarar el último punto.

¿Intentaste usar el módulo de multiprocesamiento? Parece ser el que estás buscando.