Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Χρόνος εκτέλεσης και progress bar

Χρόνος εκτέλεσης και progress bar 14 Χρόνια 3 Εβδομάδες πριν #983

  • hennett
  • Το Άβαταρ του/της hennett
  • Αποσυνδεμένος
  • py____
  • 堕天使 Hennett ®
  • Δημοσιεύσεις: 27
Υποθέτοντας ότι μέρος του κώδικα μας πρέπει να κάνει μια λειτουργία η οποία είναι χρονοβόρα, πως μπορούμε να γνωρίζουμε εντός της python σε πόσο χρόνο θα ολοκληρωθεί η διαδικασία?
Επιπρόσθετα, υπάρχει κάποιος τρόπος να τυπώνει δυναμικά* η python σε ποσοστό στα εκατό?

Εν ολίγης, αυτό που αναζητώ είναι στην χρονοβόρα διαδικάσια να έχω έξοδο κάτι ανάλογο:
Copying movie $filename from $start_path to $end_path
65% [==========>], 50 seconds remaining
(ανάλογο του wget στο terminal)

*Με τον όρο δυναμικά εννοώ την αποφυγή τύπωσης νέας γραμμής κάθε φορά που αλλάζει το ποσοστό.
- I would love to change the world, but they won't give me the source code -
Τελευταία διόρθωση: 14 Χρόνια 3 Εβδομάδες πριν από hennett.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μέτρηση και τύπωση χρόνου διαδικασιών 14 Χρόνια 3 Εβδομάδες πριν #984

  • BadGuy
  • Το Άβαταρ του/της BadGuy
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 27
  • Ληφθείσες Ευχαριστίες 1
Βρήκα κάποια πράγματα που πιστεύω θα σε βοηθήσουν και είναι αυτά που ζητάς:

Python - Command Line Progress Bar With Percentage and Elapsed Time Display

Python CLI (Command Line) Progress Bar

python-progressbar

Ελπίζω να βοήθησα! :)
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μέτρηση και τύπωση χρόνου διαδικασιών 14 Χρόνια 3 Εβδομάδες πριν #986

  • myle
  • Το Άβαταρ του/της myle
  • Αποσυνδεμένος
  • Admin
  • Δημοσιεύσεις: 467
  • Ληφθείσες Ευχαριστίες 15
Για να μετρήσεις απλά τον χρόνο που παίρνει μια διαδικασία μπορείς να χρησιμοποιήσεις το άρθρωμα timeit. Οδηγίες υπάρχουν μέσα στον οδηγό. Για τη μπάρα, αυτά που λέει ο Νίκος παραπάνω.
«Αν υποθέσουμε ότι αυτό είναι δυνατό, (να μεταδώσουμε τη σοφία παντού) τότε ειλικρινά ο τρόπος ζωής των θεών θα περάσει στους ανθρώπους. Τα πάντα θα είναι γεμάτα...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μέτρηση και τύπωση χρόνου διαδικασιών 14 Χρόνια 3 Εβδομάδες πριν #987

  • hennett
  • Το Άβαταρ του/της hennett
  • Αποσυνδεμένος
  • py____
  • 堕天使 Hennett ®
  • Δημοσιεύσεις: 27
Ευχαριστώ πολύ για τα replies παίδες!
Όμως πρέπει να ομολογήσω ότι κάπου την έχασα τη μπάλα και δεν μπορώ να βγάλω άκρη ...

Μερικές από τις απορίες που έχω είναι:

1. Στον οδηγό (σελίδα 160, κεφάλαιο 15.1 Μέτρηση Χρόνου Εκτέλεσης Συνάρτησης) στην 6η γραμμή έχει το εξής "print (sf.format(t.timeit()/10**6))" , τι ρόλο παίζει στον παρανομαστή το 10**6 ?

2. Επίσης στον οδηγό βρήκα τις οδηγίες για Εκτέλεση Συνάρτησης με Ορίσματα, μόνο που στο συγκεκριμένο παράδειγμα έχει ορίσματα που προκύπτουν από μια άλλη συνάρτηση, τι αλλαγές (αν υπάγεται σε αυτή την κατηγορία) πρέπει να γίνουν αν τα ορίσματα προκύπτουν από ένα input του χρήστη?

ΥΓ: Την progressbar δεν την δούλεψα ακόμα να δω πως λειτουργεί, in due time ...
- I would love to change the world, but they won't give me the source code -
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μέτρηση και τύπωση χρόνου διαδικασιών 14 Χρόνια 3 Εβδομάδες πριν #988

  • myle
  • Το Άβαταρ του/της myle
  • Αποσυνδεμένος
  • Admin
  • Δημοσιεύσεις: 467
  • Ληφθείσες Ευχαριστίες 15
Ευχαριστούμε για το feedback. Εύστοχες οι παρατηρήσεις σου έγινε αναδιάταξη των δυο πρώτων ενοτήτων για να γίνει πιο ξεκάθαρο αυτό και προστέθηκε παράδειγμα όπου κάποιο όρισμα καθορίζεται από τον χρήστη (μέσα από τη γραμμή εντολών).

Συνοπτικά, η απάντηση είναι:
1. 10**6 εκτελέσεις γίνονται, οπότε πρέπει να βρούμε πόσο χρόνο παίρνει η κάθε μια.

2. Προστέθηκε παράδειγμα που δείχνει αυτό ακριβώς. (σελίδα 176)

ΥΓ: Σορρυ που στο προηγούμενο μήνυμα δεν ανέφερα επακριβώς το κεφάλαιο. Θεώρησα ότι βρίσκεται εύκολα από τα περιεχόμενα. Αν έκανα λάθος, πες μου.

ΥΓ2: Προφανώς ο οδηγός ανανεώθηκε.
«Αν υποθέσουμε ότι αυτό είναι δυνατό, (να μεταδώσουμε τη σοφία παντού) τότε ειλικρινά ο τρόπος ζωής των θεών θα περάσει στους ανθρώπους. Τα πάντα θα είναι γεμάτα...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μέτρηση και τύπωση χρόνου διαδικασιών 14 Χρόνια 3 Εβδομάδες πριν #990

  • hennett
  • Το Άβαταρ του/της hennett
  • Αποσυνδεμένος
  • py____
  • 堕天使 Hennett ®
  • Δημοσιεύσεις: 27
Πολύ ωραία! Thanx myle για την άμεση απάντηση καθώς και για την ανανέωση του οδηγού! Τον παρατήρησα, το έψαξα και το πάλεψα μέχρι τελικής πτώσης και αυτό που ήθελα το πέτυχα, δούλεψε πλήρως η μέτρηση χρόνου ολοκλήρωσης μιας διαδικασίας.

Δεν μπορώ όμως να το συνδυάσω με την progressbar. Ασχολήθηκα περισσότερο με την python-progressbar επειδή μου φάνηκε πιο ολοκληρωμένη και πιο κατανοητή.

Έχει ασχοληθεί κανείς με την συγκεκριμένη να μου πει κανά-δυο λόγια για το πως δουλεύει - πως μπορώ να την χρησιμοποιήσω ανάλογα με τα γούστα μου?

ΥΓ: Για όποιον έχει κοιτάξει τα παραδείγματα, προσπαθώ να προσαρμόσω το example7 στον κώδικά μου.
- I would love to change the world, but they won't give me the source code -
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μέτρηση και τύπωση χρόνου διαδικασιών 14 Χρόνια 3 Εβδομάδες πριν #991

  • myle
  • Το Άβαταρ του/της myle
  • Αποσυνδεμένος
  • Admin
  • Δημοσιεύσεις: 467
  • Ληφθείσες Ευχαριστίες 15
Το start() μηδενίζει την progress bar.

update(ποσοστό) όπου το ποσοστό είναι %, κάνει την progress bar να δείχνει αυτό το ποσοστό.

Το end() κάνει 100% την progress bar.

Τώρα το πως θα χωρίσεις την δουλειά σου σε ίσα κομμάτια, εξαρτάται από τον κώδικα σου.

Το παράδειγμα 7, απλά κάνει αυτή τη δουλειά αυτόματα. Αν το καλοσκεφθείς λίγες διαιρέσεις είναι. Δουλεύει μόνο για for loops έτσι.
«Αν υποθέσουμε ότι αυτό είναι δυνατό, (να μεταδώσουμε τη σοφία παντού) τότε ειλικρινά ο τρόπος ζωής των θεών θα περάσει στους ανθρώπους. Τα πάντα θα είναι γεμάτα...
Τελευταία διόρθωση: 14 Χρόνια 3 Εβδομάδες πριν από myle.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μέτρηση και τύπωση χρόνου διαδικασιών 14 Χρόνια 3 Εβδομάδες πριν #992

  • hennett
  • Το Άβαταρ του/της hennett
  • Αποσυνδεμένος
  • py____
  • 堕天使 Hennett ®
  • Δημοσιεύσεις: 27
Υπάρχει τρόπος να γνωρίζουμε εκ των προταίρων πόσο χρόνο θα πάρει για να ολοκλήρωθεί μια διαδικασία, χωρίς όμως αυτή να έχει εκτελεστεί ακόμα, έτσι ώστε να χρησιμοποιήσουμε ως σημείο αναφοράς το χρόνο αυτό?
- I would love to change the world, but they won't give me the source code -
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μέτρηση και τύπωση χρόνου διαδικασιών 14 Χρόνια 3 Εβδομάδες πριν #993

  • BadGuy
  • Το Άβαταρ του/της BadGuy
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 27
  • Ληφθείσες Ευχαριστίες 1
hennett έγραψε:
Μερικές από τις απορίες που έχω είναι:

1. Στον οδηγό (σελίδα 160, κεφάλαιο 15.1 Μέτρηση Χρόνου Εκτέλεσης Συνάρτησης) στην 6η γραμμή έχει το εξής "print (sf.format(t.timeit()/10**6))" , τι ρόλο παίζει στον παρανομαστή το 10**6 ?

Υποθέτω ότι η συνάρτηση timeit() βγάζει χρόνο σε microseconds οπότε διαιρείς με 10**6 για να έχεις αποτέλεσμα σε sec...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μέτρηση και τύπωση χρόνου διαδικασιών 14 Χρόνια 3 Εβδομάδες πριν #994

  • sbosx
  • Το Άβαταρ του/της sbosx
  • Αποσυνδεμένος
  • Admin
  • to be or not to be?
  • Δημοσιεύσεις: 228
  • Ληφθείσες Ευχαριστίες 6
Είναι αυτό που είπε ο myle στο #988

Αν θες βέβαια μπορείς να το αλλάξεις αυτό με το όρισμα number docs.python.org/library/timeit.html#timeit.Timer.timeit
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μέτρηση και τύπωση χρόνου διαδικασιών 14 Χρόνια 1 Εβδομάδα πριν #997

  • myle
  • Το Άβαταρ του/της myle
  • Αποσυνδεμένος
  • Admin
  • Δημοσιεύσεις: 467
  • Ληφθείσες Ευχαριστίες 15
hennett έγραψε:
Υπάρχει τρόπος να γνωρίζουμε εκ των προταίρων πόσο χρόνο θα πάρει για να ολοκλήρωθεί μια διαδικασία, χωρίς όμως αυτή να έχει εκτελεστεί ακόμα, έτσι ώστε να χρησιμοποιήσουμε ως σημείο αναφοράς το χρόνο αυτό?

Επιστημονικά ορθή απάντηση: Δεν ξέρουμε. Πιο σωστά, γενικά, δεν γίνεται να ξέρουμε (halting problem).

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

Εναλλακτικά, μια λύση που κλιμακώνεται (κάνει scale στα ελληνικά), είναι να ορισείς λειτουργίες που παίρνουν μια μονάδα του χρόνου (πχ πρόσθεση, αφαίρεση, σύγκριση) και να επιχειρηματαλογήσεις αν το μέγεθος εισόδου είναι 1, 5, 10, n πόσο χρόνο θα χρειαστείς. Υπολογίζοντας για το n, έχεις ένα γενικό συμπέρασμα.

Ευτυχώς για εμάς, αυτό είναι εύκολο συνήθως, όσον αφορά τη χειρότερη περίπτωση, όταν μιλάμε για πρακτικά προβλήματα και μάλιστα για τα πιο σημαντικά έχει ήδη υπολογιστεί (όχι θα αφήναν). Επομένως, αν είναι κάτι "κλασικό", όπως ταξινόμηση, αναζήτηση κτλ, θα βρεις τους χρόνους συνήθως με ένα απλό ψάξιμο στο ίντερνετ (time complexity). Αν είναι κάποιο δικό σου, τότε ένας απλό κανόνας είναι:
for i in range(n):
# do something

Χρόνος: n * (χρόνο του do something)
for i in range(n):
for j in range(m):
# do something

Χρόνος: n * m * (χρόνο του do something)

Οπότε μένει να υπολογίσεις το χρόνο του do something.

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

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

PS: Δε κρατήθηκα, στη προηγούμενη παρένθεση μέθοδος παρεμβολή Newton, μέθοδους ελαχίστων τετραγώνων κ.α.
«Αν υποθέσουμε ότι αυτό είναι δυνατό, (να μεταδώσουμε τη σοφία παντού) τότε ειλικρινά ο τρόπος ζωής των θεών θα περάσει στους ανθρώπους. Τα πάντα θα είναι γεμάτα...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μέτρηση και τύπωση χρόνου διαδικασιών 14 Χρόνια 4 Ημέρες πριν #1001

  • hennett
  • Το Άβαταρ του/της hennett
  • Αποσυνδεμένος
  • py____
  • 堕天使 Hennett ®
  • Δημοσιεύσεις: 27
Sorry που άργησα να απαντήσω αλλά έτυχαν τρεχάματα.

Ευχαριστώ myle που ασχολήθηκες λίγο παραπάνω επί του θέματος, το post σου ήταν άκρως κατατοπιστικό και ενδιαφερόν ως προς τις παραβολές του (έπεσε wikipedia σύννεφο για Newton's Rings και Halting problem).

Στην αναφορά σου ως προς την πολυπλοκότητα των αλγορίθμων δεν γνωρίζω και πάρα πολλά. Φέτος δήλωσα και παρακολουθώ (ανελλειπώς) το μάθημα "Αλγόριθμοι και Πολυπλοκότητα", ενδιαφέρον αλλά πονοκέφαλος :P!

Εν κατακλείδι, μπορούμε θεωρητικά να γνωρίζουμε εκ των προταίρων το χρόνο εκτέλεσης, χωρίς όμως αυτό να σημαίνει ότι θα έχουμε πάντα την ίδια επίδοση (και εδώ μάλλον μπαίνει και η στατιστική μελέτη).
- I would love to change the world, but they won't give me the source code -
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μέτρηση και τύπωση χρόνου διαδικασιών 14 Χρόνια 4 Ημέρες πριν #1002

  • BadGuy
  • Το Άβαταρ του/της BadGuy
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 27
  • Ληφθείσες Ευχαριστίες 1
Μπορεί να γνωρίζεις θεωρητικά ότι ο αλγόριθμός σου τρέχει σε O(nlogn) για παράδειγμα αλλά το πόσο χρόνο θα πάρει να τρέξει πραγματικά εξαρτάται από το σύστημα τον οποίο τον τρέχεις. Επίσης, μπορεί 2 αλγόριθμοι να έχουν ίδια πολυπλοκότητα (π.χ. 2 αλγόριθμοι ταξινόμησης να έχουν πολυπλοκότητα Ο(nlogn)) αλλά στην πραγματικότητα ο ένας να τρέχει αρκετά πιο γρήγορα από τον άλλο καθώς το O(nlogn) είναι μια προσέγγιση. Ο ένα μπορεί να έχει πολυπλτοκότητα 2nlogn και ο άλλος 100nlogn. Ελπίζω να κατάλαβες τι εννοώ.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Χρόνος εκτέλεσης και progress bar 14 Χρόνια 4 Ημέρες πριν #1003

  • hennett
  • Το Άβαταρ του/της hennett
  • Αποσυνδεμένος
  • py____
  • 堕天使 Hennett ®
  • Δημοσιεύσεις: 27
BadGuy έγραψε:
Ελπίζω να κατάλαβες τι εννοώ.

Ναι φυσικά! Μείνε ήσυχος :). Ειδάλλως ό,τι απορία έχω, ξέρω που θα ρωτήσω ;) !
- I would love to change the world, but they won't give me the source code -
Τελευταία διόρθωση: 13 Χρόνια 8 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Χρόνος εκτέλεσης και progress bar 13 Χρόνια 7 Μήνες πριν #1377

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.455 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου