파이썬에서 현재 시간을 밀리 초 단위로 얻을 수 있습니까?
time.time()
보다 정확도가 떨어질 수 datetime.utcnow()
있습니다.
파이썬에서 현재 시간을 밀리 초 단위로 얻을 수 있습니까?
time.time()
보다 정확도가 떨어질 수 datetime.utcnow()
있습니다.
답변:
내가 필요로 한 것은 위의 @samplebias 의견에 따라 내가 한 일입니다.
import time
millis = int(round(time.time() * 1000))
print millis
간단합니다. 고마워, 뇌 방귀 미안.
재사용을 위해 :
import time
current_milli_time = lambda: int(round(time.time() * 1000))
그때:
>>> current_milli_time()
1378761833768
round
합니까? 그것은 보인다 int(time.time() * 1000)
충분하다?
.utcnow()
사용 GetSystemTimeAsFileTime()
Windows에서 최근의 CPython에 . time.clock()
전화 하지 않을 QueryPerformanceCounter()
것보다 더 많은 노이즈가 발생 하지 않습니까? 정밀도가 정확도와 같지 않음을 참조하십시오 .
time.time()
밀리 초에 대한 선호되는 접근 방식은 초입니다 datetime
.
from datetime import datetime
dt = datetime.now()
dt.microsecond
def TimestampMillisec64():
return int((datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)).total_seconds() * 1000)
.total_seconds()
더 나은 정밀도를 생성하기 위해 공식을 인라인 할 수 있습니다 : (td.microseconds + (td.seconds + td.days * 86400) * 10**6) / 10**3
(실제 나누기가 활성화 된 경우 ) 또는 밀리 초를 자르려면을 사용하십시오 // 10**3
.
버전 3.7 부터는 time.time_ns()
신기원에서 나노초가지나면서 시간을 얻는 데 사용할 수 있습니다 . 그래서 당신은 할 수 있습니다
ms = time.time_ns() // 1000000
정수로 밀리 초 단위로 시간을 얻습니다.
날짜 시간과 함께 밀리 초를 반환하는 간단한 방법을 코드에 원한다면 :
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
start_time
= 날짜 (1970,1,1)
.utcnow()
하는 대신하거나 절대 시간이 필요하지 않은 경우 당신은 사용할 수 있습니다 time.monotonous()
. 참고 : 진정한 나눗셈이 활성화 된 some_int + dt.microseconds/ 1000.0
수식 ( ) / 10**3
과 부동 소수점 산술로 인해 미묘한 차이가 있습니다. 관련 답변 의 명시 적 공식 및 링크를total_seconds()
경과 시간 측정이 걱정된다면 단조로운 시계 (python 3)를 사용해야합니다 . 예를 들어 NTP 쿼리가 시스템 시간을 조정 한 경우와 같이이 시계는 시스템 시계 업데이트의 영향을받지 않습니다.
>>> import time
>>> millis = round(time.monotonic() * 1000)
경과 시간을 측정하기 위해 나중에 비교하는 데 사용할 수있는 기준 시간 (초)을 제공합니다.
내 코드 (아래)를 사용하면 시간이 초 단위로 표시되고 10 밀리 초 후에 나타납니다. Windows와 Unix에는 차이가 있다고 생각합니다. 있다면 의견을 말하십시오.
from time import time
x = time()
print(x)
내 결과 (Windows)는 다음과 같습니다.
1576095264.2682993
편집 : 차이가 없습니다 :) 감사합니다 tc0nn
/usr/local/opt/python/bin/python3.7 scratch.py 1577212639.882543
python3 scratch.py 1577212763.9136133
밀리 초 동안 1000에 대한 이러한 곱셈은 일부 전제 조건을 해결하거나 수용하기에 적당 할 수 있습니다. 실제로 사용하지 않는 데이터베이스의 간격을 채우는 데 사용할 수 있습니다. 그러나 정확한 타이밍이 필요한 실제 상황에서는 결국 실패합니다. 나는 누군가가 특정 시간에 조치를 취하거나 처리 해야하는 미션 크리티컬 작업 에이 방법을 사용하도록 제안하지는 않습니다.
예를 들면 : 미국에서 왕복 핑은 30-80ms입니다 ... 그냥 반올림하여 효율적으로 사용할 수는 없습니다.
내 예제에는 매초마다 작업이 필요합니다. 즉, 첫 번째 작업이 응답 한 후 반올림하면 처리 시간에 모든 메인 루프 사이클이 곱해집니다. 결국 60 초마다 총 함수 호출이 발생했습니다. 그것은 ~ 1440 하루입니다. 너무 정확하지 않습니다.
실제로 사용하지 않는 데이터베이스 격차를 해결하는 것보다 더 정확한 추론을 찾는 사람들을위한 생각입니다.
import time; ms = time.time()*1000.0