В настоящее время я работаю над алгоритмом асинхронного градиента с модулем многопроцессорности Python, основная идея заключается в том, что я запускаю несколько процессов, которые асинхронно обновляют массив глобальных параметров. Я закончил большую часть фреймворка, но у меня возникла проблема, что некоторые процессы иногда «застревают», а другие все еще работают, что делает этот алгоритм менее эффективным. Поэтому мне интересно, есть ли хорошие способы убедиться, что они используют примерно такое же количество времени?Как убедиться, что каждый процесс использует примерно столько же времени при использовании мультипроцессорного модуля в Python?
Спасибо!
Должна быть причина или некоторые причины, по которым ваши подпроцессы «застревают». Без кода трудно другим понять, что происходит. Расскажите, что вы сделали, и как вы это делали, когда используете модуль «многопроцессорности». –
@PhilipTzou Спасибо за ваш комментарий! В основном в каждом процессе я запускаю цикл, который вычисляет градиент, и в конце каждого цикла он обновляет глобальные параметры. Я не уверен, проблема в модуле многопроцессорности Python или в проблеме планирования Linux, поскольку разные процессы застревают в разное время и возобновляются после нескольких десятков или сотен секунд. Программа запускается на компьютере с 12 ядрами, и если я запускаю 6 процессов параллельно, использование ЦП может варьироваться от 100% до 600%, и я понятия не имею, почему. – username123
@PhilipTzou BTW, иногда может показаться странным, что, хотя 'htop' показывает почти 0% использования ЦП в столбце данных, но панель использования процессора считывает 100% рабочую нагрузку. – username123