下面的代碼不掛在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