Pool multiprocesseur Python

Pool multiprocesseur Python
Le déploiement de deux unités de traitement central ou même plus dans un système de processeur est connu sous le nom de multiprocesse. La fonctionnalité du système pourrait être considérablement améliorée par le multiprocesseur. Python n'utilise qu'une seule unité de traitement centrale en raison de Gil. Contrairement à la langue C ou à la langue java, qui utilisent instantanément le multiprocessement. C'est une prise qui ne permet que un processus d'exécuter simultanément. Le package de multiprocessement en Python peut donc résoudre ce problème. Il y a deux modes dans cette unité qui incluent le processus et le pool. Ceux-ci peuvent nous aider à exécuter une partie spécifique de code simultanément.

Syntaxe du pool () Fonction:

Nous construisions explicitement des procédures dans la classe de processus. Bien que la classe de piscine semble être plus utile car nous pouvons le gérer dynamiquement. Pour construire un objet de pool, utilisez la syntaxe:

Chaque paramètre est facultatif. Le «Initargs» est le troisième paramètre transmis à la méthode, le deuxième paramètre «initialiseur» sera également fourni, qui est utilisé pour l'initialisation. Le «maxtasksperchild» indique le nombre total d'opérations que chaque processus d'enfant a été donné. Le processus serait mis à jour avec une nouvelle procédure de travail après avoir terminé les opérations.

Discutons de la piscine multiprocesseur supplémentaire:

Exemple n ° 1:
Jetons un coup d'œil à l'illustration ci-dessous, qui calcule le carré de l'entier et dort le code pour une seconde.

heure d'importation
du pool d'importation multiprocesseur
Def Square (A):
print (f "Ici, le processus commence: a")
carré = a * a
print (f "carré a: carré")
temps.sommeil (1)
print (f "ehere le processus se termine: a")
Si __name__ == "__main__":
start_t = heure.temps()
piscine = piscine ()
piscine.Carte (carré, gamme (0, 9))
piscine.fermer()
end_t = heure.temps()
print (f "Le temps total pris est end_t-start_t secondes")

Au début du code, nous devons importer le module de temps et le module de pool. La bibliothèque de piscine sera intégrée à partir du multiprocessement. Nous définissons la fonction carrée (). Ensuite, nous utilisons la méthode print () pour afficher le message «ici le processus commence». Ici, nous obtenons le carré du nombre en multipliant le nombre entre eux. Encore une fois, nous appelons la fonction print () pour montrer le carré du numéro défini. Nous définissons la fonction sleep () pour définir le délai du code.

Maintenant, la déclaration d'impression imprime la ligne qui montre que le processus est terminé. Commençons par le corps de la fonction principale. Nous invoquons la méthode Time () de l'heure du module. Nous construisons un élément de classe de piscine. La méthode que nous aimerions reproduire et un itérable a été fournie comme paramètres à la méthode map ().

De plus, il accepte un paramètre «ChunkSize» supplémentaire qui divise l'itérable en segments de taille égale et reçoit celui-ci comme une opération distincte. Le paramètre de la méthode map () est appliqué comme plage. Pour nier de nouvelles opérations, utilisez la piscine.Méthode close ().

Exemple n ° 2:
Dans ce cas, nous définirons le cadre de données du code pendant 2 secondes en utilisant la méthode Sleep ().

heure d'importation
du pool d'importation multiprocesseur
Def Square (A):
print (f "Le processus commence maintenant a")
carré = a * a
temps.sommeil (2)
print (f "Le processus se termine maintenant a")
carré de retour
Si __name__ == "__main__":
piscine = piscine ()
x = piscine.Carte (carré, gamme (0, 7))
Imprimer (x)

Le package et le package de piscine doivent être importés au début du programme. Le multiprocessement sera intégré à la bibliothèque de la piscine. La méthode carrée () est définie. Le message «Le processus commence maintenant» est ensuite affiché en utilisant la fonction print (). En multipliant les valeurs ensemble, nous pouvons obtenir le carré du nombre dans ce scénario.

Pour définir l'heure du code, nous invoquons la méthode Sleep (). De plus, la commande d'impression affiche une ligne indiquant que le processus s'est terminé. Dans le corps de la fonction principale, nous invoquerons la méthode Pool (). La carte de fonction () a été utilisée dans la ligne suivante. Cette fonction contient deux paramètres. Le premier argument montre le carré du numéro. Et le deuxième paramètre utilise la méthode Range ().

Nous définissons les limites inférieures et supérieures dans la fonction de plage (). En fin de compte, nous avons appelé Print () pour montrer le résultat.

Exemple n ° 3:
Incroyablement similaire à la piscine.La fonction map () est la piscine.imap (). La distinction ici est que le résultat de chaque élément est fourni aussi immédiatement qu'il est traité, plutôt que de devoir attendre que tous les articles soient terminés. De plus, l'itérable est transformé en un ensemble par la fonction map (). La technique IMAP () ne fait donc pas.

heure d'importation
du pool d'importation multiprocesseur
Def Square (x1):
print (f "Le processus STHE a démarré x1")
carré = x1 * x1
temps.sommeil (9)
print (f "Le processus s'est terminé x1")
carré de retour
Si __name__ == "__main__":
piscine = piscine ()
x2 = piscine.IMAP (carré, gamme (0, 4))
pour j en x2:
print (f "Le résultat est ici j")

Tout d'abord, nous devons inclure le cadre de temps et de piscine. Nous prenons la bibliothèque de la piscine du package de multiprocessement. Nous appelons la fonction carré (). Cette fonction contient le numéro requis comme argument. Pour afficher le message indiquant que le processus a commencé, nous avons appelé la fonction print (). En multipliant les valeurs ensemble dans ce cas, nous pouvons obtenir le carré du numéro spécifié. Pour déterminer le temps du code, nous invoquons la méthode sleep (). L'énoncé qui indique que le processus s'est terminé a été imprimé par la fonction d'impression. Le carré de l'entier spécifié est ensuite renvoyé par la fonction.

Commençons le corps de la fonction principale maintenant. La fonction Pool () sera utilisée. La ligne suivante utilise la méthode map (). Il y a deux paramètres pour cette méthode. Le carré de l'entier est fourni comme le premier paramètre. La fonction Range () est utilisée comme deuxième argument. Dans la méthode Range (), les limitations inférieures et supérieures sont spécifiées. Avant de terminer le code, nous utiliserons la boucle 'for'. Nous initialisons la variable de boucle. Cette boucle itère jusqu'à ce que la condition donnée soit remplie. Après cela, la méthode print () est appliquée pour représenter le résultat.

Conclusion

Dans ce guide, nous avons parlé du bassin multiprocesseur de Python. Lorsque de nombreux processus doivent fonctionner simultanément ou qu'une longue opération devrait être accélérée, le multiprocessement est vital. Lorsqu'un processus s'exécute sur un seul thread, ses capacités sont contraintes; Sinon, cela étirerait ses tentacules à travers de nombreux fils. Python propose une interface simple pour implémenter le multiprocessement si l'opération chronophage peut s'exécuter simultanément et que l'ensemble du système prend en charge de nombreuses architectures de processeur. Nous avons exécuté trois instances dans lesquelles nous définissons le délai du code.