: 内置的属性查找模块失败,python,python-3.x,tkinter,multiprocessing,python-multiprocessing"/>

首页 > 解决方案 > pickle.PicklingError: 不能腌制: 内置的属性查找模块失败

问题描述

我是 python 新手,我正在尝试在一个类中使用多处理。我曾尝试使用线程来执行此操作并且它有效,但是当我将其更改为多处理时,它出现了如下所示的错误。我尝试使用多处理而不是线程的原因是多处理有 .terminate() 而线程没有。请帮帮我,谢谢!

代码:

class PageMenu(tk.Frame):   


    def __init__(self, parent, controller):

        def startRolling(times):     
            theProcess = multiprocessing.Process(target = fa.main, args = (fa.roles[choice.get()], times))
            theProcess.start()
        tk.Frame.__init__(self, parent)
        textFeed = tk.IntVar()
        textField = tk.Entry(self, textvariable = textFeed)
        textField.place(x = 165, y = 170)

        button7 = tk.Button(self, text="=-=-=Start=-=-=",  command = lambda: startRolling(textFeed.get()),font = LARGE_FONT)
        button7.place(x = 165, y = 200)

错误:_pickle.PicklingError: Can't pickle : 内置属性查找模块失败

错误的完整版本在下面的链接中

在此处输入图像描述

标签: pythonpython-3.xtkintermultiprocessingpython-multiprocessing

解决方案


multiprocessing不能代替线程。

在使用创建的进程中运行的代码在与multiprocessing创建它的进程不同的进程中运行。因此,它无法访问与 Tk GUI 相关的对象;这些对象仅在父进程中有效。

如果您需要终止线程,请使用条件变量通知它该停止了。


推荐阅读