очередь Python с многопроцессорной обработкой - PullRequest
0 голосов
/ 03 июня 2019

Почему этот код выдает мне ошибку:

import multiprocessing as mp


def my_process(q):
    print(q.get())


if __name__ == '__main__':
    q = mp.Queue(maxsize=4)

    iolock = mp.Lock()
    pool = mp.Pool(processes=2, initializer=my_process, initargs=(q))

    for x in range(0,10):
        q.put(x)

    pool.close()
    pool.join()


AttributeError: Can't get attribute 'my_process' on <module '__main__' (built-in)>

Я понимаю, что это связано с выбором Python функции, которую я хочу использовать в многопроцессорном режиме, но как это исправить?

Я определил функцию my_process до того, как определил пул.

РЕДАКТИРОВАТЬ: python 3.7.3, ipython 7.0.1

AttributeError: Can't get attribute 'my_process' on <module '__main__' (built-in)>
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\PROGRAMS\Miniconda3_64\envs\py37hdb\lib\multiprocessing\spawn.py", line 105, in spawn_main
    exitcode = _main(fd)
  File "C:\PROGRAMS\Miniconda3_64\envs\py37hdb\lib\multiprocessing\spawn.py", line 115, in _main
    self = reduction.pickle.load(from_parent)
...