htop не отображает последовательную информацию

Я запускаю в вычислительном отношении интенсивный последовательный скрипт Python, и htop дает мне непоследовательную информацию. Это показывает, что поток почти на 100% используем, но что Python не использует мощности ЦП. Кто-либо знает, почему Python не перечислен как использование тонны мощности ЦП? Я использую tmux для разделения экранов, таким образом, Вы видите всю информацию.

screenshot of my code, the script running, and htop

1
задан 12 December 2018 в 21:46

1 ответ

Стандартный интерпретатор Python (CPython) является однопоточным. Это требуется тем, что назвало "Глобальную Блокировку Интерпретатора" (GIL), который не предоставляет реального параллельного доступа к объектам Python одновременно. Посмотрите, например, https://wiki.python.org/moin/GlobalInterpreterLock для деталей.

Поэтому обычный сценарий Python (который не использует, например, multiprocessing библиотека для порождения нескольких процессов интерпретатора) может только работать на одном единственном потоке ЦП за один раз. Это означает на процессоре с четырьмя потоками (двухъядерный с hyper, распараллеливающим), он может только использовать самое большее 25% общего процессорного времени, суммированного по всем потокам или 100% единственного потока ЦП.

Поэтому как htop отчеты, Ваш сценарий использует почти 100% одного потока ЦП, таким образом, он на самом деле работает в максимальной скорости, он может. Ничто необычное для наблюдения здесь.

, Если сценарий является Вашим, Вы могли бы попытаться адаптировать или переписать его для параллелизации работы при помощи multiprocessing библиотека , как упомянуто прежде. Не весь код может быть параллелизирован все же. Если Вы не можете действительно изменить сценарий, необходимо будет принять способ, которым он работает.

2
ответ дан 7 December 2019 в 13:20

Другие вопросы по тегам:

Похожие вопросы: