Почему tkinter не играет хорошо с многопроцессорностью?
Следующий код зависает, ничего не делая в python 3.2.2 в linux:
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()
Единственная информация, которую я нашел об этой проблеме,выпуск 5527, в котором отмечено, что проблема сtkinter
импортируется до того, как процесс разветвляется, что это можно исправить, импортировавtkinter
внутри функцииf
и что проблема возникает в Linux, но не в Solaris.
Кто-нибудь знает, что именно вызывает эту проблему, и является ли она преднамеренной или в конечном итоге будет исправлена? Есть ли обходной путь, кроме импортаtkinter
локально везде мне это нужно (что похоже на плохой стиль)? Есть ли у других модулей похожие проблемы с многопроцессорностью?