Python:如何获得每一瞬间的毫秒数

Python:如何获得每一瞬间的毫秒数,python,linux,Python,Linux,我想知道系统的赫兹,也就是说,Python代码一瞬间有多少毫秒 存在用户\u HZ >>> import os >>> os.sysconf_names['SC_CLK_TCK'] 2 >>> os.sysconf(2) 100 这就是内核在/proc中报告时间的方法 从时间(7)手册页面: 软件时钟、HZ和Jiffies 设置超时的各种系统调用的准确性(例如。, 选择(2),sigtimedwait(2))并测量CPU时间(例如getru

我想知道系统的赫兹,也就是说,Python代码一瞬间有多少毫秒

存在用户\u HZ

>>> import os
>>> os.sysconf_names['SC_CLK_TCK']
2
>>> os.sysconf(2)
100
这就是内核在
/proc
中报告时间的方法

从时间(7)手册页面:

软件时钟、HZ和Jiffies

设置超时的各种系统调用的准确性(例如。, 选择(2),sigtimedwait(2))并测量CPU时间(例如getrusage(2)) 受软件时钟分辨率的限制,时钟保持不变 通过内核以jiffies度量时间。一只飞镖的大小是 由内核常数HZ的值确定

HZ的值因内核版本和硬件平台而异。 在i386上,情况如下:在内核上达到并包括 2.4.x,HZ为100,给出0.01秒的抖动值;从 2.6.0,将赫兹提高到1000,给出0.001秒的瞬间。自从 内核2.6.13,HZ值是内核配置参数,可以 为100、250(默认值)或1000,产生的jiffies值分别为 0.01、0.004或0.001秒。自内核2.6.20以来,进一步 可用频率:300,一个平均分配给com的数字 mon视频帧速率(PAL,25 HZ;NTSC,30 HZ)

times(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(听起来不错),在虚拟机上显示100000000…

sysconf(SC\u CLK\u TCK)没有给出Linux中计时器中断的频率。它给出了jiffies的频率,这对于用户空间是可见的,比如/proc中不同目录中的计数器

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

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

我写了以下内容:

输出如下:

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 
python3 xt\u recent\u parser.py
XT_最近的python解析器
114.241.108.160,最后一次看到:2017-03-25 18:21:42 13次连接后
46.165.210.17,最后一次看到:2017-03-25 13:07:54连接10次后
61.53.219.162,最后一次看到:2017-03-25 17:39:17 20次连接后
179.37.141.232,最后一次看到:2017-03-25 18:08:23两次连接后
114.42.117.39,最后一次看到:2017-03-25 13:22:14连接18次后
177.12.84.234,最后一次看到:2017-03-25 16:22:14 17次连接后

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

定时器中断间隔,它决定了所有线程睡眠操作的准确性,etc@knitti“我马上给你拿。”。我认为它相当于“真正的快速”。任何与
古董中文电子邮件有关的东西。解码('hz')
?Python是一种高级语言,它使任何数字都变得毫无意义。所以有什么特别需要的吗?@MarkR:hung任务检测,使用Python从
/proc
读取每毫秒的jiffies?我建议你仔细阅读现代计算机上jiffies的定义。我相信你的定义不是不正确就是过时了。是的,它依赖于体系结构,并且在最近内核的大多数(但可能不是所有)体系结构中硬编码为100。好的,让他们保守秘密。我只是想知道,通过将
/proc/stat
/proc//stat
中的值相乘得到CPU时间。我想10毫秒已经足够精确了…我试图计算一些基于jiffies的东西,应该是ms。所以,如果知道HZ等效,那么jiffies*1000/os.sysconf(2)=ms。至少我这么认为。你的jiffies来自哪里?另外,你的方程式很奇怪。jiffies来自stime、utime和其他与时间相关的proeprities,这些proeprities可以在/proc/stat和类似的文件中找到。等式来自unixtop.org。已用时间=timediff.tv_sec*HZ+(timediff.tv_usec*HZ)/1000000;因为HZ在Python中不可用,所以我正在寻找替代方法。@Murgh:这些都是在USER_HZ中报告的,那么您还缺少什么?@hop:是的,它们是在jiffies中,但是要获得jiffies中从timeA到timeB的运行时间,我需要将ms乘以HZ。所以我需要知道赫兹来计算它。