以下代码在 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 但不是索拉里斯。
有谁知道究竟是什么导致了这个问题,如果它是故意的还是最终会得到解决?tkinter
除了在我需要的任何地方本地导入(这看起来很糟糕)之外,还有其他解决方法吗?其他模块是否有类似的多处理问题?