Следующий код висит, ничего не делая в Python 3.2.2 в Linux:Почему tkinter отлично играет с многопроцессорной обработкой?
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()
Единственная информация, которую я нашел об этой проблеме issue 5527, в котором он отметил, что проблема с tkinter
импортируется до того процесс разветвляется, что он может быть исправлен путем импорта tkinter
внутри функции f
и что проблема возникает в Linux, но не в Solaris.
Кто-нибудь знает, что именно вызывает эту проблему, и если это намеренно или в конечном итоге будет исправлено? Есть ли какое-нибудь обходное решение, кроме как импортировать tkinter
локально везде, где он мне нужен (что кажется плохим стилем)? У других модулей есть аналогичные проблемы с многопроцессорной обработкой?
-0. Вы знаете проблему. Вы знаете, что был отправлен отчет об ошибке. Вы знаете обходное решение. Единственный серьезный вопрос: «Есть ли у других модулей подобные проблемы с многопроцессорностью?», Что кажется немного открытым. –
@StevenRumbalski: Я не знаю проблемы - я понятия не имею, что делает tkinter, который не работает здесь, или почему он зависит от платформы. Отчет об ошибке был подан более 3 лет назад, и нет никаких признаков того, что кто-нибудь знает, почему (или при каких именно условиях) это происходит или как это исправить. Может быть, мой последний вопрос должен был прочитать «есть ли какие-либо другие стандартные библиотечные модули, которые нельзя импортировать, прежде чем форсировать процесс», что немного более конкретно. – James