Python:如何获得每个jiffy的毫秒数

时间:2010-11-15 21:46:19

标签: python linux

我想知道系统的HZ,即Python代码中有多少mili秒。

3 个答案:

答案 0 :(得分:23)

有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,jiffy值为0.01秒;从...开始   2.6.0,HZ升至1000,瞬间为0.001秒。以来   内核2.6.13,HZ值是一个内核配置参数,可以   是100,250(默认值)或1000,产生的jiffies值为respec-   通常,0.01,0.004或0.001秒。由于内核2.6.20,进一步   频率可用:300,一个均匀分配的数字   视频帧率(PAL,25 HZ; NTSC,30 HZ)。

     

时间(2)系统调用是一种特殊情况。它用时间报告时间   由内核常量USER_HZ定义的粒度。用户空间应用   tions可以使用确定此常量的值   的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个(听起来很合适),虚拟机中有100万个......

答案 1 :(得分:5)

sysconf(SC_CLK_TCK)没有给出Linux中定时器中断的频率。它给出了jifies的频率,这对于用户空间是可见的,比如/ proc

中各个目录中的计数器

实际频率是故意隐藏在用户空间的。实际上,有些系统使用动态滴答或“无滴答”系统,因此根本没有任何系统。

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

答案 2 :(得分:0)

我写了这个:

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类