Ну, что вы ожидаете? Если сценарий не должен ожидать дискового или пользовательского ввода-вывода, процессор должен работать на 100%.
Ваша проблема в том, что она долго работает?
Или что ваше приложение не отвечает?
В этом случае проблема заключается в том, что ваш скрипт блокирует поток, в котором выполняются все взаимодействия пользовательского интерфейса. Общее решение состоит в том, чтобы заблокировать весь ввод пользовательского интерфейса (кроме кнопки «отменить сценарий» :)) и переместить фактическую обработку в отдельный поток.
[править]
Немного другой вопрос: процессор на 100% при отсутствии сценария для обработки?
100% ЦП хорош и исправен, если вы что-то обрабатываете.
Процессор всегда занят, текущий поток всегда потребляет 100% ядра, на котором он работает. «Активность процессора 0%» фактически означает, что все циклы проводятся в потоке системного простоя (который относится к «процессу простоя системы», который вы видите в диспетчере задач).
В качестве упрощенного примера: если у вас активен один поток приложения и загрузка ЦП составляет 40%, а интервал обновления диспетчера задач составляет 1 с, 400 мс времени ЦП было потрачено на приложение, а 600 мс - на незанятый поток.