Ουρά πολυεπεξεργασίας Python

Oura Polyepexergasias Python



Το πιο κρίσιμο στοιχείο της δομής δεδομένων είναι η ουρά. Η ουρά δομής δεδομένων 'first in, first out' που είναι η βάση για την πολυεπεξεργασία Python είναι συγκρίσιμη. Παρέχονται ουρές στη λειτουργία διεργασίας για να επιτραπεί στη διαδικασία να συλλέξει τα δεδομένα. Το πρώτο στοιχείο δεδομένων που θα εξαλειφθεί από την ουρά είναι το πρώτο στοιχείο που θα εισαχθεί. Χρησιμοποιούμε τη μέθοδο 'put()' της ουράς για να προσθέσουμε τα δεδομένα στην ουρά και τη μέθοδο 'get()' για την ανάκτηση των δεδομένων από την ουρά.

Παράδειγμα 1: Χρήση της μεθόδου Queue() για τη δημιουργία μιας ουράς πολλαπλής επεξεργασίας στην Python

Σε αυτό το παράδειγμα, δημιουργούμε μια ουρά πολλαπλής επεξεργασίας στην Python χρησιμοποιώντας τη μέθοδο 'queue()'. Η πολυεπεξεργασία αναφέρεται στη χρήση μιας ή περισσότερων CPU σε ένα σύστημα για την εκτέλεση δύο ή περισσότερων διεργασιών ταυτόχρονα. Το Multiprocessing, μια κατασκευασμένη ενότητα στην Python, διευκολύνει την εναλλαγή μεταξύ διεργασιών. Πρέπει να είμαστε εξοικειωμένοι με την ιδιότητα διεργασίας πριν εργαστούμε με την πολυεπεξεργασία. Γνωρίζουμε ότι η ουρά είναι ένα κρίσιμο στοιχείο του μοντέλου δεδομένων. Η τυπική ουρά δεδομένων, η οποία βασίζεται στην ιδέα 'First-In-First-Out', και η πολυεπεξεργασία Python είναι ακριβώς αντίστοιχες. Γενικά, η ουρά αποθηκεύει το αντικείμενο Python και είναι ζωτικής σημασίας για τη μεταφορά δεδομένων μεταξύ των εργασιών.







Το εργαλείο 'spyder' χρησιμοποιείται για την εφαρμογή του σεναρίου Python παρόν, οπότε ας ξεκινήσουμε. Πρέπει πρώτα να εισαγάγουμε τη λειτουργική μονάδα πολλαπλής επεξεργασίας επειδή εκτελούμε το σενάριο πολλαπλής επεξεργασίας Python. Αυτό το κάναμε εισάγοντας τη λειτουργική μονάδα πολλαπλής επεξεργασίας ως 'm'. Χρησιμοποιώντας την τεχνική 'm.queue()', καλούμε τη μέθοδο πολλαπλής επεξεργασίας 'queue()'. Εδώ, δημιουργούμε μια μεταβλητή που ονομάζεται 'ουρά' και τοποθετούμε τη μέθοδο πολλαπλής επεξεργασίας 'queue()' σε αυτήν. Δεδομένου ότι γνωρίζουμε ότι η ουρά αποθηκεύει τα στοιχεία με σειρά 'πρώτο-σε, πρώτο-έξω', το στοιχείο που προσθέτουμε πρώτο αφαιρείται πρώτο. Μετά την εκκίνηση της ουράς πολλαπλής επεξεργασίας, καλούμε στη συνέχεια τη μέθοδο 'print()', περνώντας τη δήλωση 'Υπάρχει ουρά πολλαπλής επεξεργασίας' ως όρισμα για να την εμφανίσουμε στην οθόνη. Στη συνέχεια, επειδή αποθηκεύουμε την κατασκευασμένη ουρά σε αυτή τη μεταβλητή, εκτυπώνουμε την ουρά περνώντας τη μεταβλητή «ουρά» στην παρένθεση της μεθόδου «print()».




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







Παράδειγμα 2: Χρήση της μεθόδου 'Qsize()' για τον προσδιορισμό του μεγέθους της ουράς πολλαπλής επεξεργασίας στην Python

Καθορίζουμε το μέγεθος της ουράς πολλαπλής επεξεργασίας σε αυτήν την περίπτωση. Για να υπολογίσουμε το μέγεθος της ουράς πολλαπλής επεξεργασίας, χρησιμοποιούμε τη μέθοδο “qsize()”. Η συνάρτηση “qsize()” επιστρέφει το πραγματικό μέγεθος της ουράς πολλαπλής επεξεργασίας Python. Με άλλα λόγια, αυτή η μέθοδος παρέχει τον συνολικό αριθμό των στοιχείων σε μια ουρά.

Ας ξεκινήσουμε εισάγοντας τη λειτουργική μονάδα πολλαπλής επεξεργασίας Python ως 'm' πριν εκτελέσουμε τον κώδικα. Στη συνέχεια, χρησιμοποιώντας την εντολή “m.queue()”, καλούμε τη συνάρτηση πολλαπλής επεξεργασίας “queue()” και βάζουμε το αποτέλεσμα στη μεταβλητή “Queue”. Στη συνέχεια, χρησιμοποιώντας τη μέθοδο «put()», προσθέτουμε τα στοιχεία στην ουρά στην ακόλουθη γραμμή. Αυτή η μέθοδος χρησιμοποιείται για την προσθήκη δεδομένων σε μια ουρά. Επομένως, καλούμε το 'Queue' με τη μέθοδο 'put()' και παρέχουμε τους ακέραιους αριθμούς ως στοιχείο του στην παρένθεση του. Οι αριθμοί που προσθέτουμε είναι «1», «2», «3», «4», «5», «6» και «7» χρησιμοποιώντας τις συναρτήσεις «put()».



Επιπλέον, χρησιμοποιώντας το 'Queue' για να λάβουμε το μέγεθος της ουράς πολλαπλής επεξεργασίας, καλούμε το 'qsize()' με την ουρά πολλαπλής επεξεργασίας. Στη συνέχεια, στη μεταβλητή 'αποτέλεσμα' που σχηματίστηκε πρόσφατα, αποθηκεύουμε το αποτέλεσμα της μεθόδου 'qsize()'. Μετά από αυτό, καλούμε τη μέθοδο 'print()' και περνάμε τη δήλωση 'The multiprocessing queue's size is' ως παράμετρό της. Στη συνέχεια, καλούμε τη μεταβλητή «αποτέλεσμα» στη συνάρτηση «print()» αφού το μέγεθος αποθηκεύεται σε αυτή τη μεταβλητή.


Η εικόνα εξόδου έχει το μέγεθος που εμφανίζεται. Καθώς χρησιμοποιούμε τη συνάρτηση 'put()' για να προσθέσουμε επτά στοιχεία στην ουρά πολλαπλής επεξεργασίας και τη συνάρτηση 'qsize()' για να καθορίσουμε το μέγεθος, εμφανίζεται το μέγεθος '7' της ουράς πολλαπλής επεξεργασίας. Η δήλωση εισαγωγής 'το μέγεθος της ουράς πολλαπλής επεξεργασίας' εμφανίζεται πριν από το μέγεθος.

Παράδειγμα 3: Χρήση της μεθόδου 'Put()' και 'Get()' στην ουρά πολλαπλής επεξεργασίας Python

Οι μέθοδοι ουράς 'put()' και 'get()' από την ουρά πολλαπλής επεξεργασίας Python χρησιμοποιούνται σε αυτό το παράδειγμα. Αναπτύσσουμε δύο συναρτήσεις που καθορίζονται από το χρήστη σε αυτό το παράδειγμα. Σε αυτό το παράδειγμα, ορίζουμε μια συνάρτηση για τη δημιουργία μιας διαδικασίας που παράγει '5' τυχαίους ακέραιους αριθμούς. Χρησιμοποιούμε επίσης τη μέθοδο 'put()' για να τα προσθέσουμε σε μια ουρά. Η μέθοδος 'put()' χρησιμοποιείται για την τοποθέτηση των στοιχείων στην ουρά. Στη συνέχεια, για να ανακτήσουμε τους αριθμούς από την ουρά και να επιστρέψουμε τις τιμές τους, γράφουμε μια άλλη συνάρτηση και την καλούμε κατά τη διάρκεια της διαδικασίας. Χρησιμοποιούμε τη συνάρτηση «get()» για να ανακτήσουμε τους αριθμούς από την ουρά, καθώς αυτή η μέθοδος χρησιμοποιείται για την ανάκτηση των δεδομένων από την ουρά που εισάγουμε χρησιμοποιώντας τη μέθοδο «put()».

Ας ξεκινήσουμε την εφαρμογή του κώδικα τώρα. Αρχικά, εισάγουμε τις τέσσερις βιβλιοθήκες που απαρτίζουν αυτό το σενάριο. Εισάγουμε πρώτα το 'sleep' από τη μονάδα χρόνου για να καθυστερήσουμε την εκτέλεση για κάποιο χρονικό διάστημα που μετριέται σε δευτερόλεπτα, ακολουθούμενο από το 'random' από το random module που χρησιμοποιείται για τη δημιουργία τυχαίων αριθμών και μετά το 'process' από την πολυεπεξεργασία επειδή αυτός ο κώδικας δημιουργεί μια διαδικασία , και τέλος, η 'ουρά' από την πολυεπεξεργασία. Κατασκευάζοντας αρχικά μια παρουσία κλάσης, η ουρά μπορεί να χρησιμοποιηθεί. Από προεπιλογή, αυτό δημιουργεί μια άπειρη ουρά ή μια ουρά χωρίς μέγιστο μέγεθος. Ορίζοντας την επιλογή μέγιστου μεγέθους σε έναν αριθμό που είναι μεγαλύτερος από το μηδέν, μπορείτε να δημιουργήσετε μια δημιουργία με περιορισμό μεγέθους.


Ορίζουμε μια συνάρτηση. Στη συνέχεια, καθώς αυτή η συνάρτηση ορίζεται από τον χρήστη, της δίνουμε το όνομα 'function1' και περνάμε τον όρο 'ουρά' ως όρισμα. Στη συνέχεια, καλούμε τη συνάρτηση 'print()', μεταβιβάζοντάς της τις δηλώσεις 'builder: Running', 'flush' και το αντικείμενο 'True'. Η συνάρτηση εκτύπωσης της Python έχει μια μοναδική επιλογή που ονομάζεται flush, η οποία επιτρέπει στον χρήστη να επιλέξει εάν θα αποθηκεύσει ή όχι αυτήν την έξοδο. Το επόμενο βήμα είναι να δημιουργήσετε την εργασία. Για να το κάνουμε αυτό, χρησιμοποιούμε 'για' και δημιουργούμε τη μεταβλητή 'm' και ορίζουμε το εύρος σε '5'. Στη συνέχεια, στην επόμενη γραμμή, χρησιμοποιήστε τη λέξη 'random()' και αποθηκεύστε το αποτέλεσμα στη μεταβλητή που δημιουργήσαμε, η οποία είναι 'τιμή'. Αυτό δείχνει ότι η συνάρτηση ολοκληρώνει τώρα τις πέντε επαναλήψεις της, με κάθε επανάληψη να δημιουργεί έναν τυχαίο ακέραιο από το 0 έως το 5.

Στη συνέχεια, στο επόμενο βήμα, καλούμε τη συνάρτηση «sleep()» και περνάμε το όρισμα «value» για να καθυστερήσουμε το τμήμα για έναν ορισμένο αριθμό δευτερολέπτων. Στη συνέχεια, καλούμε την 'ουρά' με τη μέθοδο 'put()' για να προσθέσουμε ουσιαστικά την τιμή στην ουρά. Στη συνέχεια, ο χρήστης ενημερώνεται ότι δεν χρειάζεται να γίνει περαιτέρω εργασία, επικαλώντας τη μέθοδο 'queue.put() για άλλη μια φορά και περνώντας την τιμή 'None'. Στη συνέχεια, εκτελούμε τη μέθοδο 'print()', περνάμε τη δήλωση 'builder: ready' μαζί με το 'flush' και την ορίζουμε σε 'True'.


Τώρα ορίζουμε μια δεύτερη συνάρτηση, 'function2', και εκχωρούμε τη λέξη-κλειδί 'queue' ως όρισμα σε αυτήν. Στη συνέχεια, καλούμε τη συνάρτηση 'print()' ενώ μεταβιβάζουμε την αναφορά 'Χρήστης: Εκτελείται' και 'flush'  που έχει οριστεί σε 'True'. Ξεκινάμε τη λειτουργία του 'function2' χρησιμοποιώντας τη συνθήκη while true για να βγάλουμε τα δεδομένα από την ουρά και να τα τοποθετήσουμε στη μεταβλητή 'item' που δημιουργήθηκε πρόσφατα. Στη συνέχεια, χρησιμοποιούμε τη συνθήκη 'αν', 'το στοιχείο δεν είναι κανένα', για να διακόψουμε τον βρόχο εάν η συνθήκη είναι αληθής. Εάν δεν υπάρχει διαθέσιμο αντικείμενο, σταματά και ζητά από τον χρήστη ένα. Η εργασία σταματά τον βρόχο και τελειώνει σε αυτήν την περίπτωση εάν το στοιχείο που λαμβάνεται από την τιμή είναι μηδενικό. Στη συνέχεια, στο επόμενο βήμα, καλούμε τη συνάρτηση “print()” και της παρέχουμε την αναφορά “User: ready” και τις παραμέτρους “flush=True”.


Στη συνέχεια, μπαίνουμε στην κύρια διαδικασία χρησιμοποιώντας το 'If-name = main_'. Δημιουργούμε μια ουρά καλώντας τη μέθοδο 'queue()' και αποθηκεύοντάς την στη μεταβλητή 'ουρά'. Στη συνέχεια, δημιουργούμε μια διαδικασία καλώντας τη συνάρτηση χρήστη 'function2'. Για αυτό, καλούμε την κλάση «διαδικασία». Μέσα σε αυτό, περνάμε το 'target=function2' για να καλέσουμε τη συνάρτηση στη διαδικασία, περνάμε το όρισμα 'queue' και το αποθηκεύουμε στη μεταβλητή 'User_process'. Στη συνέχεια, η διαδικασία ξεκινά καλώντας τη μέθοδο 'start()' με τη μεταβλητή 'User_ process'. Στη συνέχεια επαναλαμβάνουμε την ίδια διαδικασία για να καλέσουμε τη 'συνάρτηση1' στη διαδικασία και να την τοποθετήσουμε στη μεταβλητή 'διαδικασία δόμησης'. Στη συνέχεια, καλούμε τις διεργασίες με τη μέθοδο 'join()' για να περιμένουμε την εκτέλεση.


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

συμπέρασμα

Μάθαμε για την ουρά πολλαπλής επεξεργασίας Python σε αυτό το άρθρο. Χρησιμοποιήσαμε τις δοθείσες εικόνες. Αρχικά, περιγράψαμε πώς να δημιουργήσετε μια ουρά στην πολυεπεξεργασία Python χρησιμοποιώντας τη συνάρτηση queue(). Στη συνέχεια, χρησιμοποιήσαμε τη μέθοδο 'qsize()' για να προσδιορίσουμε την ουρά . Χρησιμοποιήσαμε επίσης τις μεθόδους put() και get() της ουράς. Η κλάση ύπνου της μονάδας χρόνου και η τυχαία κατηγορία της τυχαίας ενότητας συζητήθηκαν και οι δύο στο τελευταίο παράδειγμα.