Πώς να εφαρμόσετε καλύτερα την πολυεπεξεργασία στο Python;



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

Το 2019 ήταν μια πολύ μεγάλη χρονιά για την τεχνολογική ανάπτυξη σε όλο τον κόσμο. Ξεκινώντας από τους κατασκευαστές υπολογιστών που προσθέτουν περισσότερους πυρήνες στους επεξεργαστές και τους επεξεργαστές τους έως την κυκλοφορία έξυπνων τσιπ σε κινητά τηλέφωνα, η πολυεπεξεργασία δεν είναι πλέον όνειρο. Σήμερα, μία από τις πιο σημαντικές γλώσσες προγραμματισμού που υποστηρίζει την Πολυεπεξεργασία είναι . Χάρη στην εισαγωγή της παράλληλης επεξεργαστικής δύναμης στην κυκλοφορία του, οι κωδικοποιητές σε όλο τον κόσμο μπορούν πλέον να δημιουργούν απρόσκοπτα κωδικούς που θα εκτελούνται ταυτόχρονα και συνεπώς ο χρόνος λειτουργίας τους κατά ένα σημαντικό ποσό.

Οι ακόλουθοι δείκτες θα καλυφθούν σε αυτό το άρθρο,





εκτέλεση ερωτήματος κυψέλης από τη γραμμή εντολών

Ας αρχίσουμε,

Πολυεπεξεργασία στο Python

Τι είναι η Πολυεπεξεργασία;

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



Η ανάγκη για πολυεπεξεργασία

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

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



Ένα σύστημα πολλαπλής επεξεργασίας στο Python μπορεί να είναι δύο τύπων.

Σύστημα πολλαπλών επεξεργαστών

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

Σύστημα επεξεργαστών πολλαπλών πυρήνων

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

Κωδικός για πολυεπεξεργασία στο Python

Τώρα που είστε εξοικειωμένοι με τη βασική έννοια της πολυεπεξεργασίας, ας διερευνήσουμε πώς μπορεί να επιτευχθεί η πολυεπεξεργασία στην Python.

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

Ρίξτε μια ματιά στην παρακάτω ενότητα προγράμματος για να κατανοήσετε καλύτερα αυτήν την έννοια της πολλαπλής επεξεργασίας στο python.

Παράδειγμα 1

# εισαγωγή της μονάδας πολλαπλής επεξεργασίας εισαγωγή πολλαπλής επεξεργασίας def print_cube (num): '' function to print cube of δεδομένο num '' print ('Cube: {}'. format (num * num * num)) def print_square (num): '' Λειτουργία για εκτύπωση τετραγώνου δεδομένου αριθμού '' εκτύπωση ('Τετράγωνο: {}'. μορφή (num * num)) εάν __name__ == '__main__': # δημιουργία διαδικασιών p1 = multiprocessing.Process (target = print_square, args = (10,)) p2 = multiprocessing.Process (target = print_cube, args = (10,)) # διαδικασία έναρξης 1 p1.start () # διαδικασία έναρξης 2 p2.start () # περιμένετε μέχρι να ολοκληρωθεί η διαδικασία 1 p1 .join () # περιμένετε έως ότου ολοκληρωθεί η διαδικασία 2 p2.join () # και οι δύο διαδικασίες ολοκληρώθηκαν εκτύπωση ('Τέλος!')

Παραγωγή

Πλατεία: 100

Κύβος: 1000

Ολοκληρώθηκε!

Τώρα ας αναλύσουμε αυτό το πρόγραμμα για να το κατανοήσουμε καλύτερα.

  1. Το πρώτο βήμα είναι να εισαγάγετε τη μονάδα πολλαπλής επεξεργασίας. Για να το κάνετε αυτό, χρησιμοποιήστε την ακόλουθη σύνταξη: εισαγωγή πολλαπλής επεξεργασίας.

  2. Τώρα που η μονάδα πολλαπλής επεξεργασίας έχει εισαχθεί, ας προχωρήσουμε και να δημιουργήσουμε μια διαδικασία. Για να γίνει αυτό, δημιουργούμε ένα αντικείμενο της κλάσης Διαδικασίας και του εκχωρούμε τα ακόλουθα ορίσματα. Στόχος: η συνάρτηση που πρέπει να εκτελεστεί με αυτήν τη διαδικασία και ορίσματα: τα ορίσματα που πρέπει να περάσουν στη συνάρτηση στόχου.

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

p1 = multiprocessing. Διαδικασία (target = print_square, args = (10,))

p2 = multiprocessing. Διαδικασία (target = print_cube, args = (10,))

  1. Τώρα που έχει δημιουργηθεί η διαδικασία, ας γράψουμε τη σύνταξη για να ξεκινήσουμε την ίδια.

p1. έναρξη ()

p2.start ()

Μόλις ξεκινήσει η διαδικασία, το τρέχον πρόγραμμα και το ήδη εκτελούμενο εκτελούνται ταυτόχρονα. Εάν σε μια συγκεκριμένη κατάσταση, πρέπει να σταματήσετε την εκτέλεση του τρέχοντος προγράμματος και να εστιάσετε μόνο στην εκτέλεση του προϋπάρχοντος, χρησιμοποιούμε τη συνάρτηση σύνδεσης όπως φαίνεται παρακάτω.

p1.join ()

p2.join ()

Μόλις εισαγάγετε αυτήν τη σύνταξη, ο διερμηνέας θα περιμένει το πρόγραμμα p1 να ολοκληρώσει την εκτέλεση και στη συνέχεια να προχωρήσει στο πρόγραμμα p2.

περάστε από την τιμή και περάστε με αναφορά σε java

Για να κατανοήσετε περαιτέρω αυτήν την ιδέα, ρίξτε μια ματιά σε ένα άλλο παράδειγμα για την Πολυεπεξεργασία In Python παρακάτω.

Παράδειγμα 2

# εισαγωγή της μονάδας πολλαπλής επεξεργασίας εισαγωγή εισαγωγής πολλαπλής επεξεργασίας εισαγωγή os def worker1 (): # διαδικασία εκτύπωσης id εκτύπωσης ('ID της διαδικασίας που εκτελεί τον εργαζόμενο1: {}'. format (os.getpid ())) def worker2 (): # διαδικασία εκτύπωσης id print ('Αναγνωριστικό της διαδικασίας που εκτελεί τον εργαζόμενο2: {}'. Format (os.getpid ())) εάν __name__ == '__main__': # εκτύπωση κύριας διαδικασίας διαδικασίας εκτύπωσης αναγνωριστικού ('ID της κύριας διαδικασίας: {}'. Format (os .getpid ())) # δημιουργία διεργασιών p1 = multiprocessing.Process (target = worker1) p2 = multiprocessing.Process (target = worker2) # αρχικές διαδικασίες p1.start () p2.start () # process IDs print ('ID of διαδικασία p1: {} '. format (p1.pid)) print (' ID της διαδικασίας p2: {} '. format (p2.pid)) # περιμένετε μέχρι να ολοκληρωθούν οι διαδικασίες p1.join () p2.join () # και οι δύο διεργασίες τελείωσαν την εκτύπωση («Και οι δύο διεργασίες ολοκληρώθηκαν!») # ελέγξτε αν οι διαδικασίες είναι ζωντανή εκτύπωση («Η διαδικασία p1 είναι ζωντανή: {}». format (p1.is_alive ())) print («Η διαδικασία p2 είναι ζωντανή: {} '.format (p2.is_alive ()))

Παραγωγή

Αναγνωριστικό της κύριας διαδικασίας: 18938

Αναγνωριστικό της διαδικασίας που εκτελεί τον εργαζόμενο 1: 18939

Αναγνωριστικό της διαδικασίας που εκτελεί τον εργαζόμενο 2: 18940

Αναγνωριστικό της διαδικασίας σελ.1: 18939

Αναγνωριστικό της διαδικασίας σελ. 2: 18940

Και οι δύο διαδικασίες ολοκληρώθηκαν!

Η διαδικασία p1 είναι ζωντανή: False

Η διαδικασία p2 είναι ζωντανή: False

Παρατηρήστε στο παραπάνω πρόγραμμα ότι και οι δύο διαδικασίες p1 και p2 εκτελούνται ανεξάρτητα από τις ατομικές τους αναμνήσεις. Μόλις και οι δύο ολοκληρώσουν την εκτέλεση, το πρόγραμμα τερματίζεται.

Αυτό μας φέρνει στο τέλος αυτού του άρθρου σχετικά με την Πολυεπεξεργασία στο Python

Για να μάθετε σε βάθος την Python μαζί με τις διάφορες εφαρμογές της, μπορείτε για ζωντανή διαδικτυακή εκπαίδευση με 24ωρη υποστήριξη και πρόσβαση σε όλη τη διάρκεια ζωής.

Έχετε μια ερώτηση για εμάς; Αναφέρετέ τα στην ενότητα σχολίων του άρθρου και θα επικοινωνήσουμε μαζί σας.