Как выглядит параллельная программа Python с верхней командой?

Я работаю над общим кластером. Я видел, как люди запускают параллельный код c в этом кластере, который, когда я использую top чтобы посмотреть, какие процессы запущены, как показано, использует (например) 400% процессора, поскольку они используют четыре процессора для одного экземпляра их кода.

Теперь кто-то запускает (что я слышу) параллельный код Python. Однако вместо того, чтобы показать, что код Python использует 400% CPU, он отображается как четыре разных процесса, каждый из которых использует свой собственный процессор (на 100%).

Мне интересно, показывает ли Python (при распараллеливании) top с запуском как много разных процессов (в отличие от C), или этот код Python фактически не работает параллельно?

Я не знаю, будет ли Stack Exchange лучше для этого вопроса. Поскольку я использую top я решил, что это место будет лучше. Дайте мне знать, если я его переведу.

2 Solutions collect form web for “Как выглядит параллельная программа Python с верхней командой?”

То, что вы видите на C, использует потоки, поэтому использование процесса – это общее количество всех его потоков. Если есть 4 потока, каждый из которых использует 100% процессор, процесс будет отображаться как 400%

То, что вы видите на python, почти наверняка является параллелизмом через мультипроцессорную модель. Это модель, предназначенная для преодоления ограничений на потоки Python. Python может запускать только один поток за раз (см. Python Global Interpreter Lock – GIL). Чтобы сделать это лучше, можно использовать модуль мультипроцесса, который заканчивает создание процессов вместо потоков, которые, в свою очередь, показывают в ps как несколько процессов, которые затем могут использовать до 100% CPU каждый, так как они (каждый) резьба.

Уверен, что если вы запустите ps -afeT вы увидите потоки программы C, но никаких дополнительных потоков для программы python не увидите.

Эталонная реализация Python, CPython, имеет глобальную блокировку интерпретатора (GIL), которая предотвращает параллельное выполнение кода одновременно . Threading полезен только для ввода-вывода. Для параллельной работы вам необходимо выполнить несколько процессов. Код C, который вы просматриваете, скорее всего, использует потоки для параллелизма.

  • Поиск определенного X-окна с Xlib Python
  • как читать и изменять fstab в python?
  • Почему байты, которые я получаю, не являются байтами, которые я отправил?
  • Узкие символы
  • Запуск сценария Python в виртуальной среде Conda в качестве службы
  • Archlinux собственно PKGBUILD: исполняемая ошибка Python
  • E: обновление python-setuptools завершается неудачно, apt-get broken
  • Как / Можно ли установить python переносимым способом?
  • Как получить все файлы определенного типа из виртуального веб-пути?
  • Не удалось запустить скрипт python - Отказано в разрешении
  • add-apt-repository вызывает ошибку Python
  • Linux и Unix - лучшая ОС в мире.