@Dead_Sea

Использовать ли Python, когда можно обойтись bash?

Мне непривычен(не нравится) синтаксис баш, и администрировать Линукс я решил скриптами на Питон 3. Конкретно сейчас пишу обёртку над API dzen2, lemonbar, что бы быстро создавать удобные панели. Зачастую(не только в этой задаче) нужно использовать циклы, которые будут работать в фоне постоянно проверяя условия, и обновлять информацию. Вот только обычный цикл на баш жрёт 0.0 - 0.7 CPU и 0.3 MEM. Менее процента ресурсов! А цикл на Питон подминает под себя всё CPU одного из ядер. Собственно, хотел узнать знающих людей, что бы не нагружать систему единственный выход - осваивать баш? Но в Линуксе очень часто встречается питоновый софт, тот же pypanel, а у меня один пустой цикл сразу систему кушает. Может я не знаю о каких-то питоновых фичах в данной области?
  • Вопрос задан
  • 765 просмотров
Решения вопроса 1
@fireSparrow
Без кода сложно говорить что-то конкретное.

Есть подозрение, что вы не вставляете в цикл никаких задержек. А ведь для большинства практических задач не нужно проверять что-то каждую наносекунду, можно делать, например, раз в 100 миллисекунд. А для некоторых задач и одна проверка в минуту может быть вполне адекватной частотой.

Вот этот код у меня грузит процессор на 99-100%

while True:
    x = range(3)


А вот с этим процесс python3 я почти вообще не вижу в выводе команды top. Он там появляется всего несколько раз в минуту с какой-то смешной цифрой вроде 0,2 % загрузки процессора.

import time

while True:
    x = range(3)
    time.sleep(0.1)


Так что используйте задержки в цикле и будет вам счастье.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
CityCat4
@CityCat4
Если я чешу в затылке - не беда!
Учить /bin/sh
И вот почему

На /bin/sh можно реализовать бОльшую часть админских задач, привлекая питон (хотя я вот привлекаю Perl - мне он нравится больше) только тогда, когда реально необходимо, когда скажем реализация на /bin/sh становится громоздкой и самому тебе через месяц непонятной...
Ответ написан
Может быть, можно посмотреть на другие шеллы? Доходили смутные слухи, что разнообразные zsh и csh более логичны, чем bash.
Ответ написан
@viiy
Linux сисадмин \ DevOps
Сила bash не в синтаксисе, а в тесной работе с различными утилитами
Невозможно на питоне быстро и элегантно делать то, что на баше называются "однострочниками" Когда не хватает правильных циклов, массивов, работы со строками - на помощь приходит awk, который будет быстрее в разы чем питон. Sed, grep, tr, cut сделают с тектом все что вы хотите и тоже будут быстрее чем питоновский регексп. И все это есть везде, на linux, os x, solaris, freebsd уже из коробки
В общем - учите баш
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы