2016-03-10 3 views
0

Я вставляю кучу данных в базу данных sql, которая также имеет атрибут timestamp (принимает только INTEGER, чтобы сэкономить место).Python получить unix время округлено до минуты

Всегда вставлен набор данных, и они не собираются вставлять больше нескольких секунд. Временная метка используется только как индикатор того, когда был последний раз, когда данные были обновлены, и для извлечения последних данных (GROUP BY timestamp).

Каков наиболее эффективный способ обойти отметку времени до ближайшей минуты?

Один (я предполагаю очень неэффективно) путь будет:

Edit:

from time import time 

def getTime(): 
    ts = time() 
    return ts - ts & 60 
+0

Зачем вам нужен «самый эффективный» способ? Ожидаете ли вы, что округление займет много времени в вашем приложении? –

+0

Нет, но я ожидаю, что пройду десятки тысяч строк данных, и поэтому хочу, чтобы он оставался в пределах этой границы в 1 минуту, это также хорошая практика, если приложение должно быть увеличено в будущем. – emihir0

+0

Ответ Роба имеет 'ts% 60' ** не **' ts & 60'. Оператор '&' побитовое И; он не собирается делать то, что вы хотите. –

ответ

1

Вокруг меток времени, прежде чем вы делаете вставку, например, так:

rounded_ts = ts - (ts % 60) 
cur.execute("insert into .... ? ...", (... rounded_ts, ...)") 

у меня нет идея - это самая эффективная, но поскольку она занимает всего 60 нс на моем ПК, я не думаю, что поиск более эффективного метода сэкономит много:

In [11]: %timeit rounded_ts = ts - (ts % 60) 
10000000 loops, best of 3: 61.3 ns per loop 
+0

Отредактированный OP, чтобы включить код, пожалуйста, посмотрите, правильно ли это. – emihir0

+0

OP хочет, чтобы время округлилось до ближайшей минуты, а не округлено вниз. –

+0

2Ring спасибо, что указали это, и да, вы правы. Это фактически дало бы мне 30 секунд вместо 60 секунд в худшем случае для сценария для обработки данных. – emihir0

Смежные вопросы