一个带微秒计时器的时钟

问题描述 投票:0回答:1

我正在尝试在python上创建一个微秒计时器。目标是每微秒都有一个“滴答”。

我目前的做法是:

us = list()
while len(us) <= 1000:
    t = time.time()*1000000
    if t.is_integer():
        us.append(t)

它表明,我不知道在时间方面存在明显的局限性。

656的第一个值是1532960518213592.0。 while循环以“相同”微秒执行。然后价值跳转到1532960518217613.0。最大分辨率似乎是4021 us。

我怎样才能克服这些限制?

编辑:关于此测量。

带有YouTube视频的Chrome正在后台运行。 + Outlook,团队,Adobe和其他一些东西。 CPU是i5-5200U CPU @ 2.20 GHz(2核)。

python time
1个回答
1
投票

问题是当前时间是操作系统提供的功能,因此它在不同系统上会有不同的行为,无论是在时钟精度方面还是在轮询频率方面。还要记住,您的程序可以暂停,并由操作系统的调度程序执行。

以下是代码的简化版本:

[time.time() * 10**6 for i in range(1000)]

在我的本地计算机(Windows Ubuntu子系统)上,这会生成以下内容(请注意它大约每秒一个有间隙):

[1532961190053186.0, 1532961190053189.0, 1532961190053190.0, 1532961190053191.0, 1532961190053192.0, 1532961190053193.0, 1532961190053194.0, 1532961190053195.0, 1532961190053196.0, 1532961190053198.0, ...]

在服务器(Ubuntu)上,这会产生以下内容(注意多次发生的同一时间):

[1532961559708196.0, 1532961559708198.0, 1532961559708199.0, 1532961559708199.0, 1532961559708199.0, 1532961559708200.0, 1532961559708200.0, 1532961559708200.0, 1532961559708200.0, 1532961559708201.0, ...]

© www.soinside.com 2019 - 2024. All rights reserved.