Python: Странный сбой многопроцессорной функции в консоли - PullRequest
0 голосов
/ 26 сентября 2019

Я поддерживаю экспериментальный инструмент на Python 2.7, который использует несколько библиотек, таких как Gdal, shapely, astropy, OpenCV2, scipy и т. Д. Все было хорошо, пока система не изменилась, поэтому виртуальная среда была переделана, а затемУ меня проблема с многопроцессорной функцией.

Самый упрощенный код для воспроизведения поведения:

import multiprocessing
if __name__ == '__main__':
    cpus = multiprocessing.cpu_count()
    cpus = cpus - 1
    pool = multiprocessing.Pool(processes=cpus)

Результат № 1 с:

  • Python: VirEnv 2.7 build
  • Консоль: Pycharm PyDev console

Traceback (последний вызов был последним): File "", строка 1, в Traceback (последний вызов был последним): файл "", строка 1, в файле "C: \ Python27 \ Lib \ multiprocessing \ forking.py", строка 380, в основном файле подготовки (prep_data) "C: \ Python27 \"Lib \ multiprocessing \ forking.py ", строка 504, в подготовке
Файл" C: \ Python27 \ Lib \ multiprocessing \ forking.py ", строка 380, в основном файле, path_name и т. Д. = Imp.find_module (main_name,dirs) ImportError: модуль с именем input не подготовлен (prep_data) File "C: \ Python27 \ Lib \ multiprocessing \ forking.py", строка 504, в подготовительном файле, path_name, etc = imp.find_module (main_name, dirs) ImportError: Нет модуля с именем input

Почему он ищет "C: \ Python27 \ Lib \ multiprocessing \" вместо сборки VirEnv 2.7?

Результат № 2 с:

  • Python: VirEnv 2.7 от Anaconda
  • Консоль: Pycharm Консоль PyDev

Трассировка (последний последний вызов): файл "", строка 1, в файле "C: \ Users"\ _____ \ AppData \ Local \ conda \ conda \ envs \ Python_27 \ lib \ multiprocessing \ spawn.py ", строка 105, в spawn_main exitcode = _main (fd) Файл" C: \ Users \ _____ \ AppData \ Local \ conda \ "conda \ envs \ Python_27 \ lib \ multiprocessing \ spawn.py ", строка 114, в файле _main prepare (prepare_data) в файле" C: \ Users \ _____ \ AppData \ Local \ conda \ conda \ envs \ Python_27 \ lib \ multiprocessing \ spawn.py ", строка 225, в подготовительном _fixup_main_from_path (data ['init_main_from_path']) файле" C: \ Users \ _____ \ AppData \ Local \ conda \ conda \ envs \ Python_27 \ lib \ multiprocessing \ spawn.py ", строка 277, в _fixup_main_from_path run_name =" mp_main") Файл" C: \ Users \ _____ \ AppData \ Local \ conda \ conda \ envs \ Python_27 \ lib \ runpy.py", строка 261, в коде run_path, файл fname = _get_code_from_file (имя_пути, имя_пути) Файл" C: \ Users \ _____ \ AppData \ Local \ conda \ conda \ envs \ Python_27 \ lib \ runpy.py ", строка 231, в _get_code_from_fileс открытым (fname, "rb") как f: OSError: [Errno 22] Недопустимый аргумент: 'B: \ WorkingSpace \ _____ \ API \'

Результат № 3 с:

  • Python: VirEnv 2.7 build
  • Консоль: терминал Pycharm

Передано без ошибок

Результат № 4с:

  • Python: VirEnv 2.7 от Anaconda
  • Консоль: терминал Pycharm

Передано без ошибок

Результат № 5 с:

  • Python: VirEnv 2.7 от Anaconda
  • Консоль: терминал Anaconda

Передано без ошибок

Итак, Pycharm PyDev минусыоле кажется, где происходит только сбой?Почему?Как от этого избавиться?

Кроме того :

После инициализации консоли у меня есть:

B:\WorkingSpace\_____\API\virEnv_Desktop_V2.7\Scripts\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2\helpers\pydev\pydevconsole.py" --mode=client --port=_____
import sys; print('Python %s on %s' % (sys.version, sys.platform))
sys.path.extend(['B:\\WorkingSpace\\_____\\API', 'B:/WorkingSpace/_____/API'])
PyDev console: starting.
Python 2.7.16 (v2.7.16:413a49145e, Mar  4 2019, 01:37:19) [MSC v.1500 64 bit (AMD64)] on win32

При прохождении упрощенногокод для воспроизведения поведения, ошибка «ImportError: модуль не указан» возникает в forking.py, который находится в пути «C: \ Python27 \ Lib \ multiprocessing \».

Sys.path:

  • 'C: \ Program Files \ JetBrains \ PyCharm Community Edition 2019.2 \ helpers \ pydev',
  • 'C: \ Program Files \ JetBrains \ PyCharm Community Edition 2019.2 \ helpers \ third_party\ thriftpy ',
  • ' C: \ Program Files \ JetBrains \ PyCharm Community Edition 2019.2 \ helpers \ pydev ',
  • ' C: \ Windows \ SYSTEM32 \ python27.zip ',
  • 'B: \ WorkingSpace \ _____ \ API \ virEnv_Desktop_V2.7 \ DLLs',
  • 'B: \ WorkingSpace \ _____ \ API \ virEnv_Desktop_V2.7 \ lib',
  • 'B: \ WorkingSpace \ _____ \ API \ virEnv_Desktop_V2.7 \ lib \ plat-win',
  • 'B: \ WorkingSpace \ _____ \ API \ virEnv_Desktop_V2.7 \ lib \ lib-tk',
  • 'B: \ WorkingSpace \ _____ \ API \ virEnv_Desktop_V2.7 \ Scripts',
  • 'C: \ Python27 \ Lib',
  • 'C: \ Python27 \ DLLs',
  • 'C: \ Python27 \ Lib \ lib-tk',
  • 'B: \ WorkingSpace \ _____ \ API \ virEnv_Desktop_V2.7',
  • 'B: \ WorkingSpace \ _____ \ API \ virEnv_Desktop_V2.7 \ lib \ site-packages',
  • 'B: \ WorkingSpace \ _____ \ API',
  • 'B: / WorkingSpace / _____ / API'

Что происходит?

...