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

ΘΕΜΑ: Tutorial: Multiprocessing Προγραμματισμός.

Tutorial: Multiprocessing Προγραμματισμός. 9 Χρόνια 10 Μήνες πριν #2681

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Ο Multiprocessing Προγραμματισμός είναι η δημιουργία προγραμμάτων
που τρέχουν πολλές λειτουργίες ταυτόχρονα.Για να το καταλάβετε
καλύτερα θα σας δείξω ένα παράδειγμα.

Το πρόγραμμα που θα σας δείξω αυτό που κάνει είναι να μετράει
σε δευτερόλεπτα πόση ώρα τρέχει ενώ ταυτόχρονα δίνεται η επιλογή
στον χρήστη να βλέπει αυτόν τον χρόνο ή να τερματίζει το πρόγραμμα.
import threading, time
 
'''Αυτό το πρόγραμμα το μόνο που κάνει είναι να χρονομετρεί σε
δευτερόλεπτα πόση ώρα τρέχει ενώ ταυτόχρονα δίνεται η επιλογή
στον χρήστη να δει αυτόν τον χρόνο ή να τερματίσει το πρόγραμμα.'''
 
#Μεταβλητές#
running = True
timer   = 0
#Μεταβλητές#
 
 
#=============Timer=============#
def Timer():
    global timer
 
    while running:
 
        timer += 1
        time.sleep(1)
        continue
 
    return
#=============Timer=============#
 
 
#Δημιουργία του thread.
#Το target παίρνει για τιμή το όνομα μιας συνάρτησης
#Ενώ η name μια οποιαδήποτε συμβολοσειρά.
#Η μόνη απαραίτητη παράμετρος είναι η target. 
NewThread = threading.Thread(target = Timer, name = "Timer")
 
#Έναρξη του thread.
NewThread.start()
 
 
 
 
while running:
 
    print("------Menu------")
    print("1) Running time")
    print("2) Exit")
    print("------Menu------ \n")
 
    choose = input("Choose: ")
 
    #Εμφάνιση του χρόνου έναρξης του προγράμματος.
    if choose == "1":
        print("\n\nRunning Time:", timer)
        input("Press enter to continue...")
        print("\n\n")
        continue
 
    #έξοδος από το πρόγραμμα.
    elif choose == "2":
        running = False
        pass
 
    else:
        print("\n\nUknown Input.")
        input("Press enter to continue...")
        print("\n\n")
        continue
    pass
 
 

Επεξήγηση:
Τα περισσότερα θα καταλάβατε ήδη πως δουλεύουν.Το πρόβλημά
σας θα είναι αυτές οι γραμμές:
#Δημιουργία του thread.
NewThread = threading.Thread(target = Timer, name = "Timer")
 
#Έναρξη του thread.
NewThread.start()

Αυτό που γίνεται εδώ είναι η δημιουργία ενός thread.
Φανταστείτε το thread ως ένα κανονικό πρόγραμμα, δηλαδή
με την συνάρτηση threading.Thread(target = Timer, name = "Timer") είναι σαν να δημιουργούμε ένα διαφορετικό πρόγραμμα
το οποίο εκτελεί την λειτουργία της συνάρτησης Timer.
Η NewThread.start() απλός ξεκινάει το πρόγραμμα μας(thread).
Η διαφορά από το να καλούσαμε την συνάρτηση με τον κλασικό
τρόπο δηλαδή Timer() είναι ότι τώρα το πρόγραμμά μας θα
συνεχιστή και δεν θα περιμένει πρώτα να τελειώσει η συνάρτηση
μας για να επιστρέψει από εκεί που την καλέσαμε.
Με άλλα λόγια το πρόγραμμά μας θα βρίσκεται μέσα στο
τελευταίο while loop ενώ η συνάρτηση Timer θα τρέχει ταυτόχρονα.

Τρέξτε αυτό το πρόγραμμα στον υπολογιστή σας για να δείτε
πως δουλεύει.Πιστεύω ότι είναι αρκετά εύκολο να καταλάβετε
τη κάνει και πως ακριβώς βοηθάει το thread σε αυτό.

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

Tutorial: Multiprocessing Προγραμματισμός. 9 Χρόνια 4 Μήνες πριν #3094

  • Tassos
  • Το Άβαταρ του/της Tassos
  • Αποσυνδεμένος
  • pyth__
  • g-lts.info
  • Δημοσιεύσεις: 78
  • Ληφθείσες Ευχαριστίες 5
Μπράβο σου μεγάλε, ωραίος να σε καλά για ότι προσφέρεις.
Να προσθέσω πάντως πως για του αρχάριους υπάρχει και η _thread . :)
Ομάδα Ελληνικής - Μακροχρόνιας υποστήριξη.

Greek - Long Term Support Team.

Επισκεφθείτε μας εδώ : g-lts.info
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Tutorial: Multiprocessing Προγραμματισμός. 9 Χρόνια 4 Μήνες πριν #3095

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Tassos έγραψε:
Μπράβο σου μεγάλε, ωραίος να σε καλά για ότι προσφέρεις.
Να προσθέσω πάντως πως για του αρχάριους υπάρχει και η _thread . :)

Δεν την έχω λειτουργήσει ποτέ :P
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Tutorial: Multiprocessing Προγραμματισμός. 9 Χρόνια 4 Μήνες πριν #3096

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
Εναλλακτικά για το threading τα modules:

  • multiprocessing
  • os.fork (για Unixs)
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Tutorial: Multiprocessing Προγραμματισμός. 9 Χρόνια 4 Μήνες πριν #3098

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
H _thread είναι αρκετά low-level. Συνήθως δεν χρειάζεται να καταφεύγει κάποιος σε αυτήν. Θα έλεγα ότι το καλύτερο API το έχει η concurrent.futures
docs.python.org/dev/library/concurrent.futures.html
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.565 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

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