带微秒计时器的时钟

时间:2018-07-30 14:27:58

标签: python time

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

我目前的做法是:

class ProductIndex(indexes.SearchIndex, indexes.Indexable):

    text = indexes.EdgeNgramField(
    document=True, use_template=True,
    template_name='/home/<path>/search/indexes/product_text.txt'
    )

    title = indexes.CharField(model_attr='title')
    slug = indexes.CharField(model_attr='slug')
    featured = indexes.BooleanField(model_attr='featured')

它显示出我不知道的时间安排方面的明显限制。

前656个值为us = list() while len(us) <= 1000: t = time.time()*1000000 if t.is_integer(): us.append(t) 。 while循环在“相同”的微秒内执行。 然后,该值跳至1532960518213592.0。最大分辨率似乎是4021 us。

如何克服这些限制?

编辑:关于此度量。

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

1 个答案:

答案 0 :(得分: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,...]