fbpx

Когда процесс спит…

341 просмотра
0
0 Комментариев

Доброго времени суток!

Интересует немного странный, наверное, для многих очевидный вопрос мультипроцессорности. Есть приложение на CPython, которое создает несколько экземпляров классов наследников multiprocessing.Process и управляет ими.

Допустим, что возникла ситуация, как на этой схеме. Четыре процесса выполняются параллельно в данный момент времени. Пятый, шестой, седьмой ждут своей очереди. Все мирно, тихо и тут ВНЕЗАПНО процесс «Process #2» решает немного вздремнуть, передав команду time.sleep(1). Значит Process #2 приостанавливает выполнение на 1 секунду.

Вопрос. Что будет происходить во время сна Process #2: Core #2 будет занято одним из процессов очереди или тупо бездействовать, ожидая завершения сна Process #2?

UPD: Пример кода


Добавить комментарий

1 Ответы

Python Опубликовано 20.03.2019
0

@uzumaxy, Вы имеете в виду runqueue в ОС ???

Насколько я понимаю, Вы запускаете (в примере) 8 независимых процессов без всяких питоновских манагеров.

Если так, то не беспокойтесь. ОС довольно хорошо написаны и не допускают простоя CPU, если есть готовые их использовать процессы.

Более того, если есть намного больше процессов, чем доступных процессоров, то время процессора будет выделяться всем этим процессам по очереди (на «справедливой» основе). В Linux такое перераспределение будет проходить 100 раз в секунду, если в системе нет никакой другой (кроме вычислительной) работы.

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up