Python Timeit() με Παραδείγματα

⚡ Έξυπνη Σύνοψη

Python Η συνάρτηση Timeit() μετρά τον χρόνο εκτέλεσης ενός μικρού τμήματος κώδικα εκτελώντας το πολλές φορές και επιστρέφοντας την ελάχιστη διάρκεια. Υποστηρίζει τις μεθόδους timeit, repeat και default_timer και λειτουργεί από σενάρια ή από τη γραμμή εντολών.

  • Ορισμός χρόνου: Μετράει τον χρόνο εκτέλεσης ενός τμήματος κώδικα, επιστρέφοντας το ελάχιστο σε πολλές εκτελέσεις.
  • 🧩 παράμετροι: stmt, ρύθμιση, χρονοδιακόπτης και αριθμητικός έλεγχος τι εκτελείται και πόσο συχνά.
  • 🔁 Μέθοδοι: Οι timeit(), repeat() και default_timer() προσφέρουν διαφορετικές επιλογές χρονισμού.
  • 💻 Γραμμή εντολών: Εκτελέστε την εντολή python -m timeit με σημαίες όπως -n, -r και -s.
  • Γιατί να το χρησιμοποιήσετε: Απενεργοποιεί τη συλλογή απορριμμάτων και επιλέγει τον πιο ακριβή χρονοδιακόπτη ανά λειτουργικό σύστημα.

Python Χρονομέτρηση()

Τι είναι Python Timeit();

Python timeit() είναι μια μέθοδος σε Python βιβλιοθήκη για τη μέτρηση του χρόνου εκτέλεσης που απαιτείται από το δεδομένο απόσπασμα κώδικα. Ο Python Η βιβλιοθήκη εκτελεί τη δήλωση κώδικα 1 εκατομμύριο φορές και παρέχει τον ελάχιστο χρόνο που απαιτείται από το δεδομένο σύνολο αποσπασμάτων κώδικα. Python Το timeit() είναι μια χρήσιμη μέθοδος που βοηθά στον έλεγχο της απόδοσης του κώδικα.

Σύνταξη

timeit.timeit(stmt, setup,timer, number)

Παράμετροι

  • stmt: Αυτό θα πάρει τον κωδικό για τον οποίο θέλετε να μετρήσετε το χρόνο εκτέλεσης. Η προεπιλεγμένη τιμή είναι "pass".
  • setup: Αυτό θα έχει λεπτομέρειες εγκατάστασης που πρέπει να εκτελεστούν πριν από το stmt. Η προεπιλεγμένη τιμή είναι "pass".
  • μετρών την ώραν: Αυτό θα έχει την τιμή του χρονοδιακόπτη, η timeit() έχει ήδη ορίσει μια προεπιλεγμένη τιμή και μπορούμε να την αγνοήσουμε.
  • αριθμός: Το stmt θα εκτελεστεί σύμφωνα με τον αριθμό που δίνεται εδώ. Η προεπιλεγμένη τιμή είναι 1000000.

Για να δουλέψουμε με το timeit(), πρέπει να εισαγάγουμε τη λειτουργική μονάδα, όπως φαίνεται παρακάτω:

import timeit

Πρώτο Παράδειγμα

Εδώ είναι ένα απλό παράδειγμα της συνάρτησης timeit().

Code Παράδειγμα 1

# testing timeit()
import timeit
print(timeit.timeit('output = 10*5'))

Παραγωγή:

0.06127880399999999

Είδαμε ένα απλό παράδειγμα που μας δίνει το χρόνο εκτέλεσης της εξόδου της απλής δήλωσης κώδικα = 10*5 και ο χρόνος που απαιτείται για την εκτέλεσή της είναι 0.06127880399999999.

Χρονισμός Πολλαπλές γραμμές σε κώδικα python

Υπάρχουν δύο τρόποι για να εκτελέσετε πολλές γραμμές κώδικα στο timeit.timeit(): διαχωρίζοντας τις γραμμές με ερωτηματικά ή περικλείοντας τον κώδικα ως συμβολοσειρά με τριπλά εισαγωγικά.

Ακολουθούν παραδείγματα που δείχνουν τη λειτουργία του.

Παράδειγμα 1: Χρήση ερωτηματικού

import timeit
print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))

Παραγωγή:

The time taken is  0.137031482

Παράδειγμα 2: Χρήση τριπλών εισαγωγικών

import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module))

Παραγωγή:

C:\pythontest>python testtimeit.py
The time taken is  0.182619178

timeit – Μέθοδοι

Εδώ, είναι 2 σημαντικές μέθοδοι χρόνου

timeit.default_timer() : Αυτό θα επιστρέψει τον προεπιλεγμένο χρόνο όταν εκτελεστεί.

timeit.repeat(stmt, setup, timer, repeat, number) : το ίδιο με το timeit() , αλλά με το repeat η timeit() ονομάζεται ο αριθμός των φορών που δίνεται η επανάληψη.

Παράδειγμα προγράμματος 1

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_module))

Παραγωγή:

0.46715912400000004

Παράδειγμα 2

default_timer() Παράδειγμα

# testing timeit()

import timeit
import random

def test():
    return random.randint(10, 100)

starttime = timeit.default_timer()
print("The start time is :",starttime)
test()
print("The time difference is :", timeit.default_timer() - starttime)

Παραγωγή:

The start time is : 0.220261875
The time difference is : 0.0004737320000000045

Παράδειγμα 3: timeit.repeat()

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module, repeat=5))

Παραγωγή:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

Η timeit.repeat() λειτουργεί παρόμοια με τη συνάρτηση timeit.timeit(), με τη μόνη διαφορά που παίρνει στο όρισμα επανάληψης και δίνει πίσω τον χρόνο εκτέλεσης σε μορφή πίνακα με τιμές σύμφωνα με τον αριθμό επανάληψης.

Εκτέλεση της συνάρτησης χρονισμού timeit.timeit() μέσα στη διεπαφή γραμμής εντολών

Η σύνταξη για την εκτέλεση της συνάρτησής σας μέσα στο timeit() στη γραμμή εντολών είναι η εξής:

python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]

Παράμετροι γραμμής εντολών:

  • -n N: ο αριθμός των φορών που θέλετε να εκτελεστεί ο κώδικας.
  • -r N: ο αριθμός των φορών που θέλετε να επαναληφθεί η συνάρτηση timeit().
  • -s S: θα έχει λεπτομέρειες εγκατάστασης που θα εκτελεστούν πριν από την εκτέλεση του κώδικα.
  • -t: για αυτό, μπορείτε να χρησιμοποιήσετε το time.time()
  • -c: για αυτό, μπορείτε να χρησιμοποιήσετε το time.clock()
  • -η: για βοήθεια
  • δήλωση κώδικα: Τα στοιχεία του κώδικα.

Παράδειγμα

C:\pythontest>python -m timeit -s 'text="hello world"'
20000000 loops, best of 5: 13.1 nsec per loop

Ένας άλλος τρόπος που μπορείτε να εκτελέσετε μέσα στη γραμμή εντολών είναι όπως φαίνεται παρακάτω:

Παράδειγμα

>>> import timeit
>>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
The time taken is  0.15048536300000137
>>>

Γιατί είναι το timeit() ο καλύτερος τρόπος μέτρησης του χρόνου εκτέλεσης του Python κώδικας?

Ακολουθούν μερικοί λόγοι για τους οποίους θεωρούμε ότι το timeit() είναι ο καλύτερος τρόπος μέτρησης του χρόνου εκτέλεσης.

  • Εκτελεί τη δήλωση κώδικα 1 εκατομμύριο φορές που είναι η προεπιλεγμένη τιμή, και από αυτήν, θα σας επιστρέψει τον ελάχιστο χρόνο που απαιτείται. Μπορείτε επίσης να αυξήσετε/μειώσετε το 1 εκατομμύριο ορίζοντας τον αριθμό ορίσματος στη συνάρτηση χρόνου ().
  • Κατά την εκτέλεση της δοκιμής, η συλλογή απορριμμάτων απενεργοποιείται κάθε φορά με τη λειτουργία χρόνου ().
  • Το timeit() παίρνει εσωτερικά τον ακριβή χρόνο σύμφωνα με το λειτουργικό σας σύστημα που χρησιμοποιείται. Για παράδειγμα, θα χρησιμοποιήσει time.clock() για Windows λειτουργικό σύστημα και time.time() για Mac και Linux.

Συχνές Ερωτήσεις

Η timeit.timeit() εκτελεί την εντολή έναν καθορισμένο αριθμό φορών και επιστρέφει έναν μόνο συνολικό χρόνο. Η timeit.repeat() εκτελεί ολόκληρη τη μέτρηση αρκετές φορές και επιστρέφει μια λίστα αποτελεσμάτων, επιτρέποντάς σας να επιλέξετε το καλύτερο.

Το timeit απενεργοποιεί τη συλλογή απορριμμάτων κατά τη μέτρηση, έτσι ώστε ο καθαρισμός του φόντου να μην παραμορφώνει τον χρονισμό. Αυτό κάνει τα αποτελέσματα πιο συνεπή και συγκρίσιμα, εστιάζοντας αποκλειστικά στον χρόνο εκτέλεσης του τμήματος κώδικα που δοκιμάζεται.

Μπορείτε να διαχωρίσετε τις εντολές με ερωτηματικά μέσα στη συμβολοσειρά stmt ή να περάσετε μια συμβολοσειρά πολλαπλών γραμμών χρησιμοποιώντας τριπλά εισαγωγικά. Για συναρτήσεις, ορίστε τες στο setup και καλέστε τες από το stmt.

Η τεχνητή νοημοσύνη μπορεί να δημιουργήσει προφίλ κώδικα, να εντοπίσει αργούς βρόχους ή ακριβές κλήσεις, να προτείνει διανυσματικές ή ενσωματωμένες εναλλακτικές λύσεις και να προτείνει καλύτερες δομές δεδομένων,ping Οι προγραμματιστές εστιάζουν στη βελτιστοποίηση όπου ο χρόνος δείχνει τα μεγαλύτερα σημεία συμφόρησης.

Ναι. Δεδομένου ενός τμήματος κώδικα και των αποτελεσμάτων του timeit, η Τεχνητή Νοημοσύνη μπορεί να προτείνει επανεγγραφές, όπως κατανοήσεις λίστας, εκφράσεις γεννήτριας ή συναρτήσεις βιβλιοθήκης, και στη συνέχεια εκτελείτε ξανά τη συνάρτηση timeit για να επιβεβαιώσετε ότι η βελτίωση είναι πραγματική.

Συνοψίστε αυτήν την ανάρτηση με: