Я использую lscpu | grep 'MHz'
получить мою тактовую частоту. Я получаю различные результаты на основе метода, который я называю этой командой.
Метод 1: ввод его в терминале
CPU MHz: 1200.000
Метод 2: Инкапсуляция его в сценарии, названном test.sh
Код сценария:
#! /bin/bash
cpu=$(lscpu | grep 'MHz')
echo $cpu
Затем в терминале
$ chmod +x test.sh
$ ./test.sh
Вывод:
CPU MHz: 1200.000
Пока все хорошо. Но теперь, метод 3: удар 'выполненный или просматривает текущий файл' в Geany на test.sh. Вывод:
CPU MHz: 2200.000
Метод 4: запись сценария Python, названного test.py, который называет test.sh.
Код сценария Python:
#! /usr/bin/python
import subprocess
def test():
subprocess.call("./test.sh")
if __name__ == '__main__':
test()
Затем в терминале:
$ python test.py
Вывод:
CPU MHz: 2200.000
Я попробовал и Python и python3. Оба дают тот же (ошибочный) результат.
Почему делает lscpu
дайте другой вывод, когда он будет выполнен косвенно? И как я могу зафиксировать это/обходить это? Что-то не так находится в моем коде? Если это имеет значение я запускаю Ubuntu 13.10.
Спасибо :-).
Это - совпадение, это - Ваша система, изменяющая текущую частоту CPU.
Сверяются с этой командой в терминале:
watch -n 0 "lscpu | grep 'MHz'"
Вы будете видеть (при ожидании немного), который переключает частота CPU системы.
можно также получить текущую частоту CPU с этой командой:
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
И Ваша максимальная/минимальная частота CPU с теми:
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
Изменение поведение? губернатор CPU решает, какая частота должна использоваться. Посмотрите этот , документация из ядра Linux для решения с регулятором CPU подходит лучше всего для Вас.
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "powersave" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Большинство современных центральных процессоров может скорректировать свою тактовую частоту. Регулятор по умолчанию на Linux "по требованию", который поддерживает тактовую частоту на низком уровне для экономии электроэнергии, когда неактивный и ускоряет его, чтобы сделать работу при необходимости.
См. https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt