El siguiente código se cuelga sin hacer nada en Python 3.2.2 en Linux:¿Por qué tkinter no funciona bien con multiprocesamiento?
import tkinter
from multiprocessing import Process
def f():
root = tkinter.Tk()
label = tkinter.Label(root)
label.pack()
root.mainloop()
p = Process(target=f)
p.start()
La única información que he encontrado acerca de este problema es issue 5527, en el que se señala que el problema es con tkinter
ser importados antes el proceso se bifurca, puede ser arreglado importando tkinter
dentro de la función f
, y que el problema ocurre en Linux pero no en Solaris.
¿Alguien sabe exactamente qué está causando este problema, y si es intencional o finalmente se solucionará? ¿Hay alguna otra solución que no sea importar tkinter
localmente en cualquier lugar que lo necesite (lo que parece un mal estilo)? ¿Algún otro módulo tiene problemas similares con multiprocesamiento?
-0. Usted sabe el problema. Usted sabe que se ha presentado un informe de error. Usted conoce la solución. La única otra pregunta importante es "¿Algún otro módulo tiene problemas similares con el multiprocesamiento?", Que parece un poco abierto. –
@StevenRumbalski: No conozco el problema: no tengo idea de qué está haciendo tkinter y no funciona aquí, o por qué depende de la plataforma. El informe de error se presentó hace más de 3 años, y no hay señales de que alguien sepa por qué (o en qué condiciones exactamente) sucede esto o cómo solucionarlo. Quizás mi última pregunta debería haber sido "¿hay algún otro módulo de biblioteca estándar que no se pueda importar antes de hornear un proceso?", Que es un poco más específico. – James