पायथन में मिलीसेकंड में मुझे वर्तमान समय कैसे मिल सकता है?
time.time()
तुलना में बदतर परिशुद्धता प्रदान कर सकता है datetime.utcnow()
।
पायथन में मिलीसेकंड में मुझे वर्तमान समय कैसे मिल सकता है?
time.time()
तुलना में बदतर परिशुद्धता प्रदान कर सकता है datetime.utcnow()
।
जवाबों:
इसके लिए मुझे क्या चाहिए, यहाँ मैंने जो किया, वह @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
round
? लगता int(time.time() * 1000)
है काफी है?
.utcnow()
का उपयोग करता हैGetSystemTimeAsFileTime()
। 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,1) के साथ होगा
.utcnow()
इसके बजाय का उपयोग करें या यदि आप पूर्ण समय की जरूरत नहीं है तो आप उपयोग कर सकते हैं time.monotonous()
। नोट: फ़्लोट-पॉइंट अंकगणित some_int + dt.microseconds/ 1000.0
और ( ) / 10**3
सत्य विभाजन सक्षम के साथ सूत्र के कारण एक सूक्ष्म अंतर है । देखें स्पष्ट फार्मूला और के लिए लिंक total_seconds()
संबंधित जवाब में
यदि आप बीते हुए समय को मापने के बारे में चिंतित हैं, तो आपको इसका उपयोग करना चाहिए मोनोटोनिक घड़ी (पायथन 3) का । यह घड़ी सिस्टम घड़ी के अपडेट से प्रभावित नहीं होती है, जैसे कि आप देखेंगे कि उदाहरण के लिए, एक NTP क्वेरी ने आपके सिस्टम का समय समायोजित किया है या नहीं।
>>> import time
>>> millis = round(time.monotonic() * 1000)
यह सेकंड में एक संदर्भ समय प्रदान करता है जिसका उपयोग बाद के समय को मापने के लिए तुलना करने के लिए किया जा सकता है।
यदि आप मेरे कोड (नीचे) का उपयोग करते हैं, तो समय सेकंड में दिखाई देगा, फिर, दशमलव के बाद, मिलीसेकंड। मुझे लगता है कि विंडोज और यूनिक्स के बीच अंतर है - अगर वहाँ है तो कृपया टिप्पणी करें।
from time import time
x = time()
print(x)
मेरा परिणाम (विंडोज पर) था:
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