У меня ошибка EOFError при python многопроцессорности - PullRequest
0 голосов
/ 26 марта 2020

У меня есть программа Python 2.7 (Windows 10) с импортированным модулем архива (https://arch.readthedocs.io/en/latest/index.html)

Работает при запуске в виде одного файла сценария, но с У меня ошибка при многопроцессорной обработке.

В качестве простого примера я выполняю

import multiprocessing as mp
# from arch.univariate import arch_model


def f(worker_num,return_dict):
        return_dict[worker_num] = ['dummy']


if __name__ == '__main__':          

    manager = mp.Manager()
    return_dict = manager.dict()

    procs=[]
    for i in range(2):
        proc = mp.Process(target=f, args=(i+1,return_dict))
        procs.append(proc)
    for i in procs:
        i.start()      
    for i in procs:
        i.join()

    print return_dict

Ответ правильный

{1: ['dummy'], 2: ['dummy']}

Если строка с arch_model не закомментирована, хотя у меня есть следующее

Traceback (most recent call last):

  File "<ipython-input-39-f8ffa09f5a0d>", line 1, in <module>
    runfile('C:/Users/Home/.spyder/trydummy.py', wdir='C:/Users/Home/.spyder')

  File "C:\Python\Anaconda2\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 704, in runfile
    execfile(filename, namespace)

  File "C:\Python\Anaconda2\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 93, in execfile
    exec(compile(scripttext, filename, 'exec'), glob, loc)

  File "C:/Users/Home/.spyder/trydummy.py", line 11, in <module>
    manager = mp.Manager()

  File "C:\Python\Anaconda2\lib\multiprocessing\__init__.py", line 99, in Manager
    m.start()

  File "C:\Python\Anaconda2\lib\multiprocessing\managers.py", line 528, in start
    self._address = reader.recv()

EOFError

Библиотека Arch находится в c:\Python\Anaconda2\Lib\site-packages\arch\ и прекрасно работает, когда никакая многопроцессорная обработка не выполняется.

Я прочитал Python, Windows и Multiprocessing отвечают, но я не могу воссоздать решение в моем случае. Может ли кто-нибудь помочь?

...