time
मॉड्यूल में, वहाँ दो समय कार्य हैं। time
आपको "दीवार" समय देता है, अगर यह आपकी परवाह करता है।
हालांकि, पाइथन docs का कहना है कि clock
का उपयोग बेंचमार्किंग के लिए किया जाना चाहिए। ध्यान दें कि clock
अलग प्रणालियों के विभिन्न बर्ताव करता है:
एमएस विंडोज पर
- , यह "संकल्प आम तौर पर एक माइक्रोसेकंड की तुलना में बेहतर" के साथ, Win32 समारोह QueryPerformanceCounter() का उपयोग करता है। इसका कोई विशेष अर्थ नहीं है, यह केवल एक संख्या है (यह पहली बार गिनती शुरू करता है जब आप अपनी प्रक्रिया में
clock
पर कॉल करते हैं)।
# ms windows
t0= time.clock()
do_something()
t= time.clock() - t0 # t is wall seconds elapsed (floating point)
* nix पर
- ,
clock
रिपोर्ट CPU समय। अब, यह अलग है, और संभवतः वह मूल्य जो आप चाहते हैं, क्योंकि आपका प्रोग्राम शायद ही कभी सीपीयू समय का अनुरोध करने वाली एकमात्र प्रक्रिया है (भले ही आपके पास कोई अन्य प्रक्रिया न हो, कर्नेल अब CPU समय का उपयोग करता है)। तो, यह संख्या है, जो आम तौर पर दीवार समय की तुलना में smaller¹ है (यानी time.time() - t0), और अधिक सार्थक है जब कोड बेंचमार्किंग:
# linux
t0= time.clock()
do_something()
t= time.clock() - t0 # t is CPU seconds elapsed (floating point)
सब से
अलावा, timeit मॉड्यूल है Timer
कक्षा जो उपलब्ध कार्यक्षमता से बेंचमार्किंग के लिए सबसे अच्छी है का उपयोग करने के लिए माना जाता है।
¹ जब तक सूत्रण रास्ते में हो जाता है ...
² अजगर ≥3.3: वहाँ time.perf_counter()
and time.process_time()
हैं। perf_counter
का उपयोग timeit
मॉड्यूल द्वारा किया जा रहा है।
class Timer:
def __enter__(self):
self.begin = now()
def __exit__(self, type, value, traceback):
print(format_delta(self.begin, now()))
आप इस तरह उपयोग (आप अजगर 2.5 कम से कम जरूरत है):
with Timer():
do_long_code()
जब आपके कोड समाप्त होने पर, टाइमर स्वचालित रूप से बाहर प्रिंट
संबंधित: [पाइथन में समय समाप्त हो गया है?] (Http://stackoverflow.com/q/7370801/4279) – jfs