下面的代码不挂在linux在Python 3.2.2做任何事情:为什么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
之前被导入该进程是分叉的,可以通过在函数f
中导入tkinter
来解决该问题,并且问题发生在Linux而不是Solaris中。
有谁知道到底是什么原因导致了这个问题,如果是故意的或最终会被修复?是否有任何解决方法,而不是在本地需要的地方导入tkinter
(这看起来像不好的风格)?其他模块是否有与多处理相似的问题?
-0。你知道这个问题。你知道一个错误报告已经提交。您知道解决方法。唯一的另一个主要问题是“其他模块是否有与多处理相似的问题?”,这似乎有点不确定。 –
@StevenRumbalski:我不知道这个问题 - 我不知道tkinter在这里无法正常工作,或者为什么它依赖于平台。该错误报告是在3年前提交的,并且没有迹象表明任何人都知道为什么(或者在什么情况下)发生这种情况或者如何解决这个问题。也许我最后一个问题应该读到“是否有任何其他标准库模块在分支进程之前无法导入”,这有点更具体。 – James