pickle.PicklingError: Не могу засолить: модуль поиска атрибутов на встроенных ошибках не выполнен - PullRequest
0 голосов
/ 10 июня 2018

Я новичок в 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: сбой модуля поиска атрибутов для встроенных функций

полная версияошибок в ссылке ниже

введите описание изображения здесь

1 Ответ

0 голосов
/ 10 июня 2018

multiprocessing не заменяет потоки.

Код, выполняемый в процессах, созданных с помощью multiprocessing, выполняется в отдельном процессе от процесса, который его создал.Как таковой, он не может получить доступ к объектам, связанным с Tk GUI;эти объекты действительны только в родительском процессе.

Если вам нужно завершить поток, используйте условную переменную, чтобы уведомить его о том, что пора останавливаться.

...