Ваши экземпляры создаются в одну секунду.Поместите time.sleep(1)
между ними, и вы увидите изменение времени.Вы также можете использовать %X.%f
для печати микросекунд времени, но разрешение ваших часов может по-прежнему создавать их с тем же штампом.
Один из способов исправить это, чтобы убедиться, что у вас есть уникальное время, состоит в том, чтобыдождитесь времени, чтобы поставить «галочку»:
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())
Вывод:
Ant ID:00001 2018-05-24 09:10:41.085253
Ant ID:00002 2018-05-24 09:10:41.100867
В моей системе для получения нового значения времени потребовалось около 15 мс.
Есливам не нужно значение даты / времени, time.perf_counter()
имеет гораздо более высокую точность, но не связано с конкретной датой и временем.Вы можете сравнить только разницу между двумя показаниями.В моей системе это меньше микросекунды на тик, но вы все равно можете назвать ее достаточно быстро, чтобы не тикать:
>>> time.perf_counter() - time.perf_counter()
0.0
>>> time.perf_counter() - time.perf_counter()
-3.775817631890277e-07