gpt4 book ai didi

python - 为什么 tkinter 不能很好地处理多处理?

转载 作者:太空狗 更新时间:2023-10-30 01:38:42 35 4
gpt4 key购买 nike

以下代码在 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 ,其中注意到问题是在进程 fork 之前导入 tkinter ,可以通过在函数 f< 中导入 tkinter 来修复它,并且该问题出现在 Linux 而不是 Solaris。

有谁知道究竟是什么导致了这个问题,如果它是故意的或者最终会被修复?除了在我需要的任何地方本地导入 tkinter 之外,还有其他解决方法吗(这看起来很糟糕)?其他模块是否有类似的多处理问题?

最佳答案

我怀疑问题与 X 服务器(通常是套接字)的连接有关。如果这是在进程 fork() 之前创建的,则子进程会继承此连接。但是如果它试图使用它,X 服务器就会感到困惑。

粗略查看 Tkinter.py 后,看起来在启动进程之前调用 NoDefaultRoot 函数可能很有用。这完全取决于何时与 X 服务器建立连接。

否则在 fork 之后导入 Tkinter 似乎是可行的方法。

关于python - 为什么 tkinter 不能很好地处理多处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10755641/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com