Python 多处理 - TypeError: 无法腌制 '_tkinter.tkapp' 对象



我正在尝试用python和Tkinter进行简单的多处理。但我收到了错误。

Exception in Tkinter callback
...
...
ForkingPickler(file, protocol).dump(obj)
TypeError: cannot pickle '_tkinter.tkapp' object

程序很简单。运行后,它打开窗口(起始页(,我点击按钮,它将我重定向到experiencePage,我点击该按钮,一切都启动

class experimentPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
# start experiment on click
self.button2 = tk.Button(self, text="Ready",
command=self.logic)
self.button2.pack()
def proc1(self):
while True:
print("LOL1")
def proc2(self):
while True:
print("LOL2")
def proc3(self):
while True:
print("LOL3")
def logic(self):
t1 = multiprocessing.Process(target=self.proc1)
t2 = multiprocessing.Process(target=self.proc2)
t3 = multiprocessing.Process(target=self.proc3)
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()

这是我的主要

class Main(tk.Tk):
def __init__(self, *args, **kwargs):

tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
self.attributes('-fullscreen', True) 
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (startPage.startPage, experimentPage.experimentPage):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(startPage.startPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
app = Main()
app.mainloop()

我就是做不到。谢谢你的帮助。

多处理器使用multiprocessing.Queue在进程之间交换信息。此队列实现使用pickle来序列化和反序列化信息。

包括tkinter的应用程序在内的一些对象是不可拾取的。

请参阅此SO问题以供参考。

相关内容

  • 没有找到相关文章

最新更新