Python Timeit() με Παραδείγματα
Τι είναι 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().
Παράδειγμα κώδικα 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()
- stmt: Αυτό θα πάρει τον κωδικό που θέλετε να μετρήσετε τον χρόνο εκτέλεσης
- setup: Αυτό θα έχει λεπτομέρειες εγκατάστασης που πρέπει να εκτελεστούν πριν από το stmt
- timer: Αυτό θα έχει την τιμή του χρονοδιακόπτη, η timeit() έχει ήδη ορίσει μια προεπιλεγμένη τιμή και μπορούμε να την αγνοήσουμε.
- αριθμός: Το stmt θα εκτελεστεί σύμφωνα με τον αριθμό που δίνεται εδώ.