Проблема с классами в multiprocessing

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

from multiprocessing import Process
from chatterbot import ChatBot
class test_bot(ChatBot):

    def __init__(self):
        super().__init__("bot")

    def func(self):

        print("hello")


if __name__ == "__main__":

    bot = test_bot()

    p = Process(target=bot.func)

    p.start()
    p.join()

И получается такая ошибка

Traceback (most recent call last): File "C:/Users/Admin/PycharmProjects/TestBot/test.py", line 19, in a.start() File "C:\Program Files\Python36\lib\multiprocessing\process.py", line 105, in start self._popen = self._Popen(self) File "C:\Program Files\Python36\lib\multiprocessing\context.py", line 223, in _Popen return _default_context.get_context().Process._Popen(process_obj) File "C:\Program Files\Python36\lib\multiprocessing\context.py", line 322, in _Popen return Popen(process_obj) File "C:\Program Files\Python36\lib\multiprocessing\popen_spawn_win32.py", line 65, in init reduction.dump(process_obj, to_child) File "C:\Program Files\Python36\lib\multiprocessing\reduction.py", line 60, in dump ForkingPickler(file, protocol).dump(obj) TypeError: can't pickle _thread._local objects

Надеюсь кто нибудь поможет. Заранее спасибо


Ответы (0 шт):