Многопроцессорная обработка Python -> не может вызвать процесс в потоке - PullRequest
0 голосов
/ 06 сентября 2018

Я создаю поток внутри функции __main__, создавая объект, который наследуется от threading.Thread.Внутри его метода запуска я открываю multiprocessing.Process с целевой функцией, которая находится в глобальном пространстве имен модуля, но я получаю ошибку:

from multiprocessing import Process, Queue
import threading

def executeTests(ScriptName, Params, MsgQueue, ResultQueue):
...

class TestRunner(threading.Thread):
    def __init__(self, tests):
        threading.Thread.__init__(self)
        ...
    def run(self):
        MsgQueue = Queue()
        ResultQueue = Queue()
        TestProcess = Process(target=executeTests, args=(ScriptName, Params, MsgQueue, ResultQueue))
        TestProcess.start()
        ...

if __name__ == "__main__":
    TestRunner(...).start()


Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Program Files\Python36\lib\multiprocessing\spawn.py", line 105, in sp
awn_main
    exitcode = _main(fd)
  File "C:\Program Files\Python36\lib\multiprocessing\spawn.py", line 115, in _m
ain
    self = reduction.pickle.load(from_parent)
AttributeError: Can't get attribute 'executeTests' on <module '__main__' (built-
in)>

1 Ответ

0 голосов
/ 07 сентября 2018

Я решил это сам. Объединение () отсутствовало в main .

...