web-dev-qa-db-fra.com

Obtenir l'heure actuelle en millisecondes en Python?

Comment obtenir l'heure actuelle en millisecondes en Python?

444
Naftuli Kay

Pour ce dont j'avais besoin, voici ce que j'ai fait, basé sur le commentaire de @samplebias ci-dessus:

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

Quick'n'easy. Merci à tous, désolé pour le cerveau pétant.

Pour réutilisation:

import time

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

Ensuite:

>>> current_milli_time()
1378761833768
613
Naftuli Kay

time.time() ne peut donner une résolution qu'à la seconde, l'approche recommandée en millisecondes est datetime .

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

une autre solution est la fonction que vous pouvez intégrer à votre propre utils.py

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

Juste un exemple de code:

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

Sortie: 1534343781311

11
Wilson Wu

Depuis version 3.7 vous pouvez utiliser time.time_ns() pour obtenir le temps écoulé en nanosecondes depuis Epoch. Donc tu peux faire

ms = time.time_ns() // 1000000 

obtenir le temps en millisecondes sous forme de nombre entier.

11
zardosht

Si vous voulez une méthode simple dans votre code qui renvoie les millisecondes avec datetime:

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

La méthode la plus simple que j'ai trouvée pour obtenir l'heure UTC actuelle en millisecondes est la suivante:

# 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

Ces multiplications à 1000 pour des millisecondes peuvent être décentes pour résoudre ou rendre une condition préalable acceptable. Il pourrait être utilisé pour combler une lacune dans votre base de données qui ne l'utilise jamais vraiment. Bien que, pour des situations réelles qui nécessitent un timing précis, il échouerait finalement. Je ne suggérerais à personne d'utiliser cette méthode pour des opérations critiques nécessitant des actions ou un traitement à des moments précis.

Par exemple: les pings aller-retour font entre 30 et 80 ms aux États-Unis… Vous ne pouvez pas simplement arrondir cela et l'utiliser efficacement.

Mon propre exemple nécessite des tâches à chaque seconde, ce qui signifie que si je arrondissais après la réponse des premières tâches, je subirais toujours le temps de traitement multiplié à chaque cycle de la boucle principale. Cela a fini par être un appel de fonction total toutes les 60 secondes. C'est ~ 1440 par jour .. pas trop précis.

Juste une pensée pour ceux qui recherchent un raisonnement plus précis que la résolution d’un déficit de base de données qui ne l’utilise jamais vraiment.

0
Mike Guidry