<p>您的实例将在同一秒钟内创建。{1}你看他们之间的时间变化。您也可以使用<code>%X.%f</code>来打印时间的微秒,但是时钟的分辨率仍然可以创建具有相同标记的微秒。在</p>
<p>解决这个问题的一种方法是等待时间“嘀嗒”一声:</p>
<pre><code>import time
class Ants(object):
"""Workers"""
ID = 1
def __init__(self):
import datetime
self.borningTime = datetime.datetime.now()
# Wait for the time to change
while datetime.datetime.now() == self.borningTime:
pass
self.ID = Ants.ID
Ants.ID += 1
def get_ID(self):
return "Ant ID:" + str(self.ID).zfill(5)
def get_borningTime(self):
return self.borningTime.strftime("%Y-%m-%d %X.%f") # Add microseconds.
my1Ant = Ants()
my2Ant = Ants()
print(my1Ant.get_ID(), my1Ant.get_borningTime())
print(my2Ant.get_ID(), my2Ant.get_borningTime())
</code></pre>
<p>输出:</p>
^{pr2}$
<p>在我的系统上,大约需要15毫秒才能得到一个新的时间值。在</p>
<p>如果不需要日期/时间值,<code>time.perf_counter()</code>的精度要高得多,但与特定的日期和时间无关。你只能比较两个读数之间的差别。在我的系统中,每滴答不到一微秒,但你仍然可以调用它足够快而不滴答:</p>
<pre><code>>>> time.perf_counter() - time.perf_counter()
0.0
>>> time.perf_counter() - time.perf_counter()
-3.775817631890277e-07
</code></pre>