【发布时间】:2012-06-01 02:36:17
【问题描述】:
以下代码在linux中的python 3.2.2中没有做任何事情就挂起:
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 年前提交的,没有迹象表明有人知道为什么(或在什么条件下)会发生这种情况或如何修复它。也许我的最后一个问题应该是“是否有任何其他标准库模块在 fork 进程之前无法导入”,这更具体一些。
标签: python tkinter multiprocessing