Мой код должен работать с целочисленным временем UNIX, но time.time()
не подходит для моего варианта использования. Он возвращает число с плавающей точкой, и приведение его к типу int или создание пола с использованием math.floor () занимает слишком много времени при записи с использованием timeit.timeit.
Вывод timeit.timeit(lambda : time())
составляет около 0,12 секунды, что достаточно дляМой вариант использования, но не int.
Вывод timeit.timeit(lambda : int(time()))
составляет около 0,25 секунды, что слишком долго для моего варианта использования.
timeit.timeit(lambda : math.floor(time()))
составляет около 0,36 секунды, худший из трех.
Время очень важно, поэтому я бы предпочел некоторую встроенную функцию, которая возвращает время UNIX как целое число, а не как число с плавающей точкой.
Вот фрагмент моего кода:
def main():
# The value of proceed goes up to 120.
proceed = 1
# timeout is some timestamp set at runtime, 2 days from the start of execution.
while int(time()) <= timeout:
# tps() uses int(time()), and this is what I want fixed.
if proceed == tps():
batchSend(tps())
proceed += 1
# These functions also use int(time())
tocollect = mine()
collect(tocollect)