Ο 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 σε αυτό.
Άμα καταλάβετε αυτό το προγραμματάκι τότε έχετε ήδη μάθει
αρκετά πως να κάνετε προγράμματα που να τρέχουν περισσότερες
λειτουργίες ταυτόχρονα.