Python: как получить количество секунд мили за один раз

Я хотел бы знать HZ системы, то есть сколько миллисекунд – одно jiffy из кода Python.

3 Solutions collect form web for “Python: как получить количество секунд мили за один раз”

Существует USER_HZ

 >>> import os >>> os.sysconf_names['SC_CLK_TCK'] 2 >>> os.sysconf(2) 100 

это то, что ядро ​​использует для сообщения времени в /proc .

С time(7) справочная страница:

Программное обеспечение Clock, HZ и Jiffies

Точность различных системных вызовов, задающих таймауты (например, select (2), sigtimedwait (2)) и измерение времени процессора (например, getrusage (2)), ограничена разрешением программного таймера, часы, поддерживаемые ядро, которое измеряет время в jiffies. Размер jiffy определяется значением постоянной ядра HZ.

Значение HZ зависит от версий ядра и аппаратных платформ. На i386 ситуация такова: на ядрах до 2.4.x включительно, HZ составлял 100, давая значение в 0,01 секунды; начиная с 2,6,0, HZ был увеличен до 1000, что дало толчок 0,001 секунды. Начиная с ядра 2.6.13, значение HZ является параметром конфигурации ядра и может быть 100, 250 (по умолчанию) или 1000, что дает значение jiffies, соответственно 0,01, 0,004 или 0,001 секунды. Начиная с ядра 2.6.20, доступна еще одна частота: 300, число, которое равномерно распределяется для общей частоты кадров видео (PAL, 25 HZ, NTSC, 30 HZ).

Системный вызов времени (2) является частным случаем. Он сообщает времена с гранулярностью, определяемой константой ядра USER_HZ. Пользовательские приложения могут определять значение этой константы с помощью sysconf (_SC_CLK_TCK).

Если вы абсолютно должны знать SYSTEM_HZ:

 >>> from ctypes import * >>> rt = CDLL('librt.so') >>> CLOCK_REALTIME = 0 >>> class timespec(Structure): ... _fields_ = [("tv_sec", c_long), ("tv_nsec", c_long)] ... >>> res = timespec() >>> rt.clock_getres(CLOCK_REALTIME, byref(res)) 0 >>> res.tv_sec, res.tv_nsec (0, 4000250) >>> SYSTEM_HZ = round(1/(res.tv_sec + (res.tv_nsec/10.0**9))) 

Дает 250 на моем ноутбуке (что звучит примерно правильно) и 1000000000 в виртуальной машине …

sysconf (SC_CLK_TCK) не дает частоты прерываний таймера в Linux. Он дает частоту jiffies, которая видима для пользовательского пространства в таких вещах, как счетчики в разных каталогах в / proc

Фактическая частота скрыта от пользовательского пространства, преднамеренно. Действительно, некоторые системы используют динамические тики или «бескамерные» системы, поэтому их вообще нет.

Все интерфейсы пользовательского пространства используют значение из SC_CLK_TCK, которое, насколько я могу видеть, всегда находится под Linux.

Я написал это:

https://github.com/peppelinux/xt_recent_parser

вывод выглядит следующим образом:

 python3 xt_recent_parser.py XT_RECENT python parser <giuseppe.demarco@unical.it> 114.241.108.160, last seen: 2017-03-25 18:21:42 after 13 Connections 46.165.210.17, last seen: 2017-03-25 13:07:54 after 10 Connections 61.53.219.162, last seen: 2017-03-25 17:39:17 after 20 Connections 179.37.141.232, last seen: 2017-03-25 18:08:23 after 2 Connections 114.42.117.39, last seen: 2017-03-25 13:22:14 after 18 Connections 177.12.84.234, last seen: 2017-03-25 16:22:14 after 17 Connections 

Я думаю, что это будет легко редактировать, если вам понадобится миллисекундное преобразование, вам нужно расширить класс python JiffyTimeConverter

  • Как заставить процессы python работать с правильным именем процесса?
  • Как заставить apache обслуживать статические файлы на Flask webapp
  • Восхитительный текст и Linux-KDE. Системным локалям присваивается значение, которое не может обрабатывать символы, отличные от ASCII
  • Разработка для порта HDMI в Linux
  • OSError: Операция не разрешена
  • Использовать Python по умолчанию вместо установки Anaconda при вызове с терминала
  • python или bash - добавление «в начале строки и», в конце строки
  • Библиотека сокетов Python считает, что сокет открыт, когда он не
  • Python - лучший язык программирования в мире.