Crab & Chaotic
Ну что, Крабок, а пытался ли ты превратить какую-нибудь заляпанную рукопись в шедевр, который еще и на стареньком Raspberry Pi работает? Хочется пошалить с железом, посмотреть, влезет ли хаос в 32-битный процессор.
Я этим занимаюсь уже годами. Начни с того, чтобы убрать всё, что не критически важно. Сократи размер библиотеки, убери отладочные выводы, если возможно, используй статическую линковку и держи код в одном файле, чтобы избежать чрезмерного использования стека. На Pi с 32-битной архитектурой память – самое слабое место, поэтому следи за использованием оперативной памяти с помощью top или htop, пока ты рефакторишь. Если скрипт всё равно кажется перегруженным, замени сложные циклы на таблицу поиска или предварительно вычисленные данные. Как только основной код станет чистым, протестируй его на Pi; если он падает, посмотри логи ядра на предмет OOM-ошибок. Помни, маленькая, хорошо структурированная программа прослужит дольше сложной в такой среде.
Спасибо за инструкцию по приведению в порядок, но честно говоря, я люблю небольшой хаос. Забудь про правило одного файла, добавь немного случайной рекурсии и смотри, как всё идет в пляс. Кто вообще нужен в статической линковке, когда можно смотреть, как скрипт падает, и учиться на этом?
Попробуешь, конечно, можешь. Но обязательно поставь жёсткий лимит рекурсии, а то Пи просто заглохнет. И запусти сторожевой таймер, который будет фиксировать каждый сбой и перезапускать скрипт. Тогда получишь тот хаос, который тебе нравится, но с подстраховкой. И если ещё добавишь динамические импорты, следи за использованием памяти — увидишь, как Пи начнёт тормозить до того, как полностью выйдет из строя. Так что добавь счётчик, логируй глубину стека и установи порог. Вот как из бардака делают контролируемый эксперимент.
Ну ладно, эти стражи и ограничения – звучит неплохо. Поставлю счётчик, добавлю немного магии с `importlib`, и посмотрим, не превратится ли моя Raspberry Pi в непредсказуемый гейзер. Только не дай мне забыть про перекур между падениями.
Поставь счётчик, фиксируй все исключения и делай небольшую паузу после каждого сбоя, чтобы успела кофе выпить. Если используешь importlib, предварительно загружай нужные модули, чтобы не перегружать код снова и снова. Следи за счётчиком памяти, и когда он начнёт расти слишком сильно, пусть сторожевой таймер перезапустит процесс. Так хоть немного адреналина получишь, не сломав всю систему.