Python: cómo obtener el número de milisegundos por segundo

Me gustaría saber el HZ del sistema, es decir, cuántos milisegundos es un minuto del código Python.

Hay USER_HZ

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

que es lo que el kernel usa para reportar el tiempo en /proc .

A partir de la página de manual del time(7) :

El reloj del software, HZ y Jiffies

La precisión de varias llamadas al sistema que establecen tiempos de espera (por ejemplo, seleccionar (2), sigtimedwait (2)) y medir el tiempo de CPU (por ejemplo, getrusage (2)) está limitada por la resolución del reloj del software, un reloj mantenido por el Kernel que mide el tiempo en jiffies. El tamaño de un jiffy está determinado por el valor de la constante de núcleo HZ.

El valor de HZ varía según las versiones del kernel y las plataformas de hardware. En i386, la situación es la siguiente: en núcleos de hasta 2.4.x inclusive, HZ fue de 100, lo que da un valor en jiffy de 0.01 segundos; a partir de 2.6.0, HZ se elevó a 1000, con un tiempo de 0.001 segundos. Desde el kernel 2.6.13, el valor HZ es un parámetro de configuración del kernel y puede ser 100, 250 (el valor predeterminado) o 1000, produciendo un valor jiffies de, respectivamente, 0.01, 0.004 o 0.001 segundos. Desde el kernel 2.6.20, hay una frecuencia adicional disponible: 300, un número que se divide de manera uniforme para las tasas de fotogtwigs de vídeo comunes (PAL, 25 HZ; NTSC, 30 HZ).

La llamada del sistema times (2) es un caso especial. Informa los tiempos con una granularidad definida por la constante de núcleo USER_HZ. Las aplicaciones de espacio de usuario pueden determinar el valor de esta constante usando sysconf (_SC_CLK_TCK).

Si es absolutamente necesario saber 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))) 

Da 250 en mi computadora portátil (lo que parece correcto) y 1000000000 en una máquina virtual …

sysconf (SC_CLK_TCK) no da la frecuencia de las interrupciones del temporizador en Linux. Da la frecuencia de jiffies que es visible para el espacio de usuario en cosas como los contadores en varios directorios en / proc

La frecuencia real está oculta del espacio de usuario, deliberadamente. De hecho, algunos sistemas utilizan tics dynamics o sistemas “sin tictac”, por lo que realmente no hay ninguno en absoluto.

Todas las interfaces del espacio de usuario utilizan el valor de SC_CLK_TCK, que, por lo que puedo ver, siempre es 100 en Linux.

Yo escribí esto:

https://github.com/peppelinux/xt_recent_parser

La salida es así:

 python3 xt_recent_parser.py XT_RECENT python parser  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 

Creo que será fácil de editar si necesita una conversión de milisegundos, solo tiene que extender la clase de python JiffyTimeConverter