Python:如何获得jiffy的mili秒数

我想知道系统的HZ,即Python代码中有多less毫秒是一个jiffy。

Solutions Collecting From Web of "Python:如何获得jiffy的mili秒数"

有USER_HZ

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

这是内核用于在/proc报告时间的内容。

time(7)手册页:

软件时钟,HZ和Jiffies

设置超时的各种系统调用(例如,select(2),sigtimedwait(2))和度量CPU时间(例如,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和VM中的1000000000 …

sysconf(SC_CLK_TCK)不给定Linux中定时器中断的频率。 它给出了用户空间可见的jiffies的频率,例如/ proc中各个目录中的计数器

有意识地将用户空间的实际频率隐藏起来。 事实上,有些系统使用动态的刻度或“无刻度”的系统,所以根本就没有。

所有的用户空间接口都使用来自SC_CLK_TCK的值,据我所知在Linux下总是100。

我写了这个:

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 

我认为,如果你需要毫秒转换,编辑会很容易,你只需要扩展JiffyTimeConverter python类