Python multiprocessing.Pool () выдает ошибку - PullRequest
0 голосов
/ 05 июля 2019

Я использую Python 2.7.14 и мне нужно создать метод для нескольких процессов.Я попытался использовать многопроцессорность:

from multiprocessing import Pool
pool = Pool()

Это выдает следующую ошибку:

File "sw\lib\multiprocessing\__init__.py", line 232, in Pool
return Pool(processes, initializer, initargs, maxtasksperchild)
File "sw\lib\multiprocessing\pool.py", line 61, in __init__
self._repopulate_pool()
File "sw\lib\multiprocessing\pool.py", line 25, in _repopulate_pool
w.start()
File "sw\lib\multiprocessing\process.py", line 130, in start
self._popen = Popen(self)
File "sw\lib\multiprocessing\forking.py", line 272, in __init__
prep_data = get_preparation_data(process_obj._name)
File "<console>", line 2, in _get_preparation_data
File "sw\lib\multiprocessing\forking.py", line 409, in get_preparation_data
not d['sys_argv'][0].lower().endswith('pythonservice.exe'):
IndexError: list index out of range

Это ошибка с Python 2.7?

Есть ли альтернатива в Pythonдля многопроцессорной обработки?

Ответы [ 3 ]

0 голосов
/ 05 июля 2019

В: Это ошибка в Python 2.7?
A: Нет, это не ошибка,
скорее всего, состояние вашей localhost установки повреждено

НАБЛЮДЕНИЯ:

Ваш py2.7 Тестируемая система (SuT):
FAIL / EXC'ed: SuT прибегнул к выбрасыванию исключения, так как ему не удалось найти pythonservice.exe* Файл 1017 * при создании экземпляра Pool(). Система localhost, не имеющая такого файла, не может продолжить работу, как было показано выше, и выдает Exc:

File "sw\lib\multiprocessing\forking.py", line 409, in get_preparation_data
      not d['sys_argv'][0].lower().endswith('pythonservice.exe'):
IndexError: list index out of range

Стандартный py2.7 SuT :
PASS

Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from multiprocessing import Pool
>>> pool = Pool()
>>>

ОЦЕНКА:

Интерпретатор Python 2.7 способен выполнять MCVE-код без каких-либо предупреждений и / или ошибок. Проблема специфична для вашего-py2.7-SuT, в целом не воспроизводима, и наблюдения показывают, что ваш-py2.7-SuT имеет недостатки, скорее всего из-за поврежденного состояния установки экосистемы python (EXC сообщал об отсутствии некоторых файлов, что иначе справедливо было бы предположить, что она всегда присутствует в такой экосистеме).

1037 * что и требовалось доказать *

Q: Есть ли в python альтернатива для многопроцессорной обработки?

Надлежащим шагом является восстановление (путем полной переустановки) установки localhost python, поскольку она показала, что она повреждена.

Настоятельно рекомендуется использовать любую из современных систем управления пакетами (mini-conda, conda и др.), Чтобы быть уверенными в правильном управлении конфигурацией и инструментах управления версиями, которые используются для предотвращения несовместимости вашей новой установки и несовместимости смешанных версий. любые подобные нежелательные побочные эффекты от повторного появления.

0 голосов
/ 06 июля 2019

Раньше я испытывал отсутствие библиотеки при установке python Anaconda.Для этого рекомендуется переустановить Anaconda, чтобы повторно установить отсутствующий пакет.

Pool, Lock & Semaphore - это многопроцессорная оболочка, которая фактически оборачивает процессы вконтролировать использование процессора, оперативной памяти и других мощностей вашего компьютера.Вы можете проверить эту статью о том, как его использовать https://realpython.com/intro-to-python-threading/

0 голосов
/ 05 июля 2019

Я могу использовать Pool в многопроцессорной среде с моим python 2.7.14.Можете ли вы попробовать создать его в среде conda и посмотреть, работает ли он

conda create -n test2.7 python=2.7.14
source activate test2.7

Теперь откройте оболочку Python и посмотрите, работает ли он

from multiprocessing import Pool
pool = Pool()
...