Python에서 현재 시간을 밀리초 단위로 가져오려면 어떻게 해야 합니까?
Python에서 현재 시간을 밀리초 단위로 가져오려면 어떻게 해야 합니까?
사용방법:
import time
def current_milli_time():
return round(time.time() * 1000)
그 후, 다음과 같이 입력합니다.
>>> current_milli_time()
1378761833768
Python 3.7+의 경우 에폭에서 나노초가 경과한 시간을 얻기 위해 사용합니다.
이것은 밀리초 단위의 시간을 정수로 제공합니다.
import time
ms = time.time_ns() // 1_000_000
time.time()
는, 2번째의 해결 방법만을 제공할 수 있습니다.밀리초 동안 권장되는 접근법은 입니다.
from datetime import datetime
dt = datetime.now()
dt.microsecond
def TimestampMillisec64():
return int((datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)).total_seconds() * 1000)
샘플 코드:
import time
timestamp = int(time.time()*1000.0)
출력: 1534343781311
3.7 이후의 Python 버전에서는 를 사용하는 것이 가장 좋습니다.문서에 기재된 바와 같이:
time.perf_counter() -> float
성능 카운터 값(단시간 측정 시 사용 가능한 최고 분해능 클럭)을 반환합니다.여기에는 수면 중 경과된 시간이 포함되며 시스템 전체에 걸쳐 있습니다.반환된 값의 기준점이 정의되지 않았기 때문에 연속된 콜 결과의 차이만 유효합니다.
time.perf_counter_ns() -> int
perf_counter()와 비슷하지만 시간은 나노초로 반환됩니다.
이는 시스템에서 제공하는 최고의 카운터를 사용합니다.또한 퍼포먼스 측정에 사용할 수 있도록 특별히 설계되었습니다(따라서 다른 타이머의 일반적인 함정을 회피하려고 합니다).
또한 나노초의 정수를 얻을 수 있으므로 1000000으로 나누면 밀리초를 얻을 수 있습니다.
start = time.perf_counter_ns()
# do some work
duration = time.perf_counter_ns() - start
print(f"Your duration was {duration // 1000000}ms.")
또 다른 솔루션은 자신의 활용도에 내장할 수 있는 기능입니다.화이
import time as time_ #make sure we don't override time
def millis():
return int(round(time_.time() * 1000))
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
경과 시간 측정에 관심이 있는 경우 단조 시계(피톤 3)를 사용해야 합니다.이 클럭은 예를 들어 NTP 쿼리가 시스템 시간을 조정했는지 확인할 수 있는 시스템클럭 업데이트의 영향을 받지 않습니다.
>>> import time
>>> millis = round(time.monotonic() * 1000)
나중에 경과 시간을 측정하기 위해 비교할 수 있는 기준 시간(초)을 제공합니다.
내 코드(아래)를 사용하는 경우 시간은 초 단위로 표시되고 소수점 이후 밀리초 단위로 표시됩니다.Windows 와 Unix 의 차이는 있다고 생각합니다만, 있으면 코멘트해 주세요.
from time import time
x = time()
print(x)
(Windows에서의) 결과는 다음과 같습니다.
1576095264.2682993
편집: 차이는 없습니다.감사합니다 tc0nnn
현재 UTC 시간을 밀리초 단위로 얻는 가장 간단한 방법은 다음과 같습니다.
# timeutil.py
import datetime
def get_epochtime_ms():
return round(datetime.datetime.utcnow().timestamp() * 1000)
# sample.py
import timeutil
timeutil.get_epochtime_ms()
Python 3.8+에서 몇 가지 테스트를 한 결과, 적어도 Windows 10에서는 이러한 옵션이 정확히 같은 결과를 제공한다는 것을 알게 되었습니다.
import time
# Option 1
unix_time_ms_1 = int(time.time_ns() / 1000000)
# Option 2
unix_time_ms_2 = int(time.time() * 1000)
마음에 드는 것을 자유롭게 사용하세요.그리고 이것보다 더 복잡한 해결책은 필요 없다고 생각합니다.
갱신: @neuralmer 덕분입니다.
가장 효율적인 방법 중 하나:
(time.time_ns() + 500000) // 1000000 #rounding last digit (1ms digit)
또는
time.time_ns() // 1000000 #flooring last digit (1ms digit)
둘 다 다른 방법 중에서 매우 효율적입니다.
벤치마크:
아래 내 컴퓨터에서 여러 가지 방법에 대한 벤치마크 결과를 볼 수 있습니다.
import time
t = time.perf_counter_ns()
for i in range(1000):
o = time.time_ns() // 1000000 #each 200 ns
t2 = time.perf_counter_ns()
print((t2 - t)//1000)
t = time.perf_counter_ns()
for i in range(1000):
o = (time.time_ns() + 500000) // 1000000 #each 227 ns
t2 = time.perf_counter_ns()
print((t2 - t)//1000)
t = time.perf_counter_ns()
for i in range(1000):
o = round(time.time_ns() / 1000000) #each 456 ns
t2 = time.perf_counter_ns()
print((t2 - t)//1000)
t = time.perf_counter_ns()
for i in range(1000):
o = int(time.time_ns() / 1000000) #each 467 ns
t2 = time.perf_counter_ns()
print((t2 - t)//1000)
t = time.perf_counter_ns()
for i in range(1000):
o = int(time.time()* 1000) #each 319 ns
t2 = time.perf_counter_ns()
print((t2 - t)//1000)
t = time.perf_counter_ns()
for i in range(1000):
o = round(time.time()* 1000) #each 342 ns
t2 = time.perf_counter_ns()
print((t2 - t)//1000)```
이러한 1000을 밀리초 동안 곱하면 몇 가지 전제 조건을 해결하거나 허용할 수 있는 수준으로 만들 수 있습니다.실제로 사용하지 않는 데이터베이스의 공백을 메우기 위해 사용할 수 있습니다.그러나 정확한 타이밍이 필요한 실제 상황에서는 결국 실패합니다.작업이나 특정 타이밍에 처리해야 하는 미션 크리티컬 작업에 이 방법을 사용하는 것은 권장하지 않습니다.
예를 들어 미국에서는 왕복 ping이 30~80ms입니다.당신은 그것을 단순히 모아서 효율적으로 사용할 수 없습니다.
제 예에서는 매초 작업이 필요합니다.즉, 첫 번째 작업이 응답한 후 반올림하면 메인 루프 사이클마다 처리 시간이 곱해집니다.이것은 60초마다의 합계 함수 호출이 됩니다.하루에 1440달러까지..너무 정확하지 않아요
실제로 사용하지 않는 데이터베이스 갭을 해결하는 것보다 더 정확한 추론을 찾는 사람들을 위한 아이디어입니다.
unix 이후 경과 시간
from time import time
while True:
print(str(time()*1000)+'ms \r', end='')
프로그램 시작 후 시간
from time import time
init = time()
while True:
print(str((time()-init)*1000)+'ms \r', end='')
시간 내주셔서 감사합니다
다른 솔루션으로는datetime
Python 3+용 모듈.
round(datetime.datetime.timestamp(datetime.datetime.now()) * 1000)
언급URL : https://stackoverflow.com/questions/5998245/how-do-i-get-the-current-time-in-milliseconds-in-python
'itsource' 카테고리의 다른 글
어떻게 외래 키 관계 있는 행동을 바꾸려고 할까?(행동) (0) | 2022.09.06 |
---|---|
Java의 스태틱/인스턴스 이니셜라이저 블록은 어떤 순서로 실행됩니까? (0) | 2022.09.06 |
데이터 테이블에 작업 버튼을 삽입하고 행 데이터를 가져옵니다. (0) | 2022.09.06 |
onKeyPress vs. onKeyUp 및 onKeyDown (0) | 2022.09.06 |
Python 목록은 삽입된 순서대로 요소를 유지할 수 있습니까? (0) | 2022.09.06 |