it-roy-ru.com

Получить текущее время в миллисекундах в Python?

Как я могу получить текущее время в миллисекундах в Python?

420
Naftuli Kay

Для того, что мне нужно, вот что я сделал, основываясь на комментарии @samplebias выше:

import time
millis = int(round(time.time() * 1000))
print millis

Quick'n'easy. Спасибо всем, простите за пердеть мозг.

Для повторного использования:

import time

current_milli_time = lambda: int(round(time.time() * 1000))

Затем:

>>> current_milli_time()
1378761833768
585
Naftuli Kay

time.time() может разрешать только секунды, предпочтительный подход для миллисекунд - datetime .

from datetime import datetime
dt = datetime.now()
dt.microsecond
73
Jason Polites
def TimestampMillisec64():
    return int((datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)).total_seconds() * 1000) 
36
user3324131

другое решение - это функция, которую вы можете встроить в свой собственный utils.py.

import time as time_ #make sure we don't override time
def millis():
    return int(round(time_.time() * 1000))
11
Cadey

Просто пример кода:

import time
timestamp = int(time.time()*1000.0)

Результат: 1534343781311

10
Wilson Wu

Если вам нужен простой метод в вашем коде, который возвращает миллисекунды с датой и временем:

from datetime import datetime
from datetime import timedelta

start_time = datetime.now()

# returns the elapsed milliseconds since the start of the program
def millis():
   dt = datetime.now() - start_time
   ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0
   return ms
9
Pascal

С версия 3.7 вы можете использовать time.time_ns(), чтобы получить время, прошедшее через нано секунды от Epoch. Так что вы можете сделать

ms = time.time_ns() // 1000000 

чтобы получить время в миллисекундах как целое число.

4
zardosht

Самый простой способ узнать текущее время UTC в миллисекундах:

# timeutil.py
import datetime


def get_epochtime_ms():
    return round(datetime.datetime.utcnow().timestamp() * 1000)

# sample.py
import timeutil


timeutil.get_epochtime_ms()
2
Laymain

Эти умножения до 1000 для миллисекунд могут быть приличными для решения или принятия некоторого предварительного условия приемлемым. Это может быть использовано для заполнения пробела в вашей базе данных, которая на самом деле никогда не использует его. Хотя, для реальных ситуаций, которые требуют точного времени, это в конечном итоге потерпит неудачу. Я бы не советовал никому использовать этот метод для критически важных операций, которые требуют действий или обработки в определенные моменты времени.

Например: пинг в оба конца в США составляет 30-80 мс ... Вы не могли бы просто округлить это и использовать его эффективно.

Мой собственный пример требует выполнения задач каждую секунду, что означает, что если я соберусь после того, как первые задачи ответят, я все равно буду брать на себя время обработки, умноженное на каждый цикл основного цикла. В итоге это был полный вызов функции каждые 60 секунд. это ~ 1440 в день .. не слишком точно.

Просто мысль для людей, ищущих более точные рассуждения, помимо решения проблемы с базой данных, которая никогда не использует их.

0
Mike Guidry