Que sont les threads en python ? Résumé des concepts et avantages

乌拉乌拉~
Libérer: 2018-08-23 17:41:39
original
2044 Les gens l'ont consulté

Dans l'article suivant, nous découvrirons ce que sont les threads en python. Découvrez le processus Python et le rôle que python multithread peut jouer dans la programmation Python.

Présentation des concepts et des différences entre les processus et les threads

1. Concepts de base des threads

Concepts

<.>Le thread est la plus petite unité qui effectue des opérations dans le processus. Il s'agit d'une entité dans le processus et de l'unité de base qui est planifiée et distribuée indépendamment par le système. Le thread lui-même ne possède pas de ressources système et ne possède que certaines ressources qui le sont. essentiel pendant le fonctionnement, mais toutes les ressources appartenant au processus peuvent être partagées avec d'autres threads appartenant au même processus. Un thread peut créer et détruire un autre thread, et plusieurs threads du même processus peuvent s'exécuter simultanément.


Avantages

(1) Facile à planifier.

(2) Améliorer la simultanéité. La concurrence peut être obtenue facilement et efficacement via des threads. Un processus peut créer plusieurs threads pour exécuter différentes parties du même programme.

(3) Faible surcharge. La création de threads est plus rapide que la création de processus et nécessite très peu de frais généraux

2. L'état de base du processus et la relation entre les états

Statut : en cours d'exécution, bloqué, suspendu, bloqué, prêt, bloqué. Transition entre les états prêts

 :

(1) Le processus prêt est programmé pour être exécuté par le CPU et devient l'état en cours d'exécution

(2) En cours d'exécution Un processus qui ; fait une demande d'E/S ou ne peut pas obtenir la ressource demandée est bloquée ;

(3) Un processus en cours d'exécution devient prêt une fois l'exécution du processus terminée (ou la tranche de temps a expiré

) ; (4) Suspendre le processus bloqué dans l'état bloqué suspendu Lorsque l'opération d'E/S qui a provoqué le blocage du processus est terminée avant que l'utilisateur ne redémarre le processus (appelé réveil), l'état bloqué suspendu devient un état prêt suspendu. . Lorsque l'utilisateur redémarre le processus avant la fin de l'opération d'E/S, l'état de blocage suspendu devient un état de blocage

(5) Suspend le processus en mode prêt (ou en cours d'exécution) et devient un état de blocage ; le processus reprend, l'état prêt suspendu devient prêt ;

3. La relation et la différence entre les threads et les processus ?

La relation entre les processus et les threads :

(1) Un thread ne peut appartenir qu'à un seul processus, et un processus peut avoir plusieurs threads, mais il y a au moins un thread.

(2) Les ressources sont allouées aux processus, et tous les threads du même processus partagent toutes les ressources du processus.

(3) Le processeur est attribué au thread, c'est-à-dire que le thread s'exécute réellement sur le processeur

(4) Le thread doit coopérer et se synchroniser pendant l'exécution. Les threads des différents processus doivent utiliser la communication par messages pour réaliser la synchronisation. Un thread fait référence à une unité d'exécution au sein d'un processus et est également une entité planifiable au sein du processus

La différence entre un processus et un thread :

(1) Planification : le thread est la base. unité de planification et d'allocation. Le processus est l'unité de base de la propriété des ressources

(2) Concurrence : non seulement les processus peuvent être exécutés simultanément, mais plusieurs threads du même processus peuvent également être exécutés simultanément

(3) Ressources de possession : un processus est une unité indépendante qui possède des ressources. Un thread ne possède pas de ressources système, mais peut accéder aux ressources appartenant au processus

(4) Surcharge système : lors de la création ou de l'annulation. un processus, le système doit L'allocation et le recyclage des ressources entraînent une surcharge du système nettement supérieure à la surcharge lors de la création ou de la destruction de threads.

4. Comment communiquer entre les processus ?

(1) Pipe et tube nommé : les tubes peuvent être utilisés pour la communication entre les processus parent et enfants qui ont une affinité. En plus d'avoir les fonctions d'un tube nommé, un tube nommé permet également une communication non liée entre des processus relationnels. .

(2) Signal : Un signal est une simulation du mécanisme d'interruption au niveau logiciel. Il s'agit d'une méthode de communication relativement complexe utilisée pour informer le processus qu'un certain événement s'est produit. du signal et le processeur recevant une demande d'interruption peuvent être considérés comme cohérents.

(3) File d'attente de messages (file d'attente de messages) : La file d'attente de messages est une liste chaînée de messages. Elle surmonte les défauts des sémaphores limités dans les deux méthodes de communication précédentes. Les processus dotés d'autorisations d'écriture peuvent leur envoyer des messages en fonction. à certaines règles. De nouvelles informations sont ajoutées à la file d'attente des messages ; les processus disposant d'autorisations de lecture sur la file d'attente des messages peuvent lire les informations de la file d'attente des messages.

(4) Mémoire partagée : On peut dire que c'est la méthode de communication inter-processus la plus utile. Il permet à plusieurs processus d'accéder au même espace mémoire, et différents processus peuvent voir les mises à jour des données dans la mémoire partagée dans les processus de chacun en temps opportun. Cette méthode nécessite une sorte d'opération de synchronisation, telle que des verrous mutex et des sémaphores.

(5) Sémaphore : Principalement utilisé comme moyen de synchronisation et d'exclusion mutuelle entre les processus et entre les différents threads d'un même processus.

(6) Socket : Il s'agit d'un mécanisme de communication inter-processus plus général. Il peut être utilisé pour la communication inter-processus entre différentes machines du réseau et est largement utilisé.

5. La différence entre synchronisation et exclusion mutuelle :

Lorsqu'il y a plusieurs threads, il est souvent nécessaire de synchroniser ces threads pour accéder aux mêmes données ou ressources. Par exemple, supposons qu'il existe un programme dans lequel un thread est utilisé pour lire un fichier en mémoire et un autre thread est utilisé pour compter le nombre de caractères dans le fichier. Bien entendu, cela ne sert à rien de compter l’intégralité du fichier tant qu’il n’a pas été chargé en mémoire. Cependant, comme chaque opération possède son propre thread, le système d'exploitation traite les deux threads comme des tâches indépendantes et les exécute séparément, ce qui permet de compter les mots sans charger l'intégralité du fichier en mémoire. Pour résoudre ce problème, vous devez faire fonctionner les deux threads de manière synchrone.

La soi-disant synchronisation fait référence à plusieurs fragments de programme marchant entre différents processus. Leur fonctionnement doit être exécuté dans le strict respect d'un certain ordre spécifié. Cet ordre dépend des tâches spécifiques à accomplir. Si elle est définie en termes d'accès aux ressources, la synchronisation fait référence à l'accès ordonné aux ressources par les visiteurs via d'autres mécanismes sur la base de l'exclusion mutuelle (dans la plupart des cas). Dans la plupart des cas, la synchronisation implémente déjà l'exclusion mutuelle, en particulier lorsque toutes les écritures sur les ressources doivent s'exclure mutuellement. Dans de rares cas, plusieurs visiteurs peuvent être autorisés à accéder à la ressource en même temps.

La soi-disant exclusion mutuelle fait référence à un certain nombre de fragments de programme dispersés entre différents processus. Lorsqu'un processus exécute l'un des fragments de programme, les autres processus ne peuvent en exécuter aucun. Ils ne peuvent qu'attendre que le processus l'ait fait. fini d'exécuter ce fragment de programme avant de l'exécuter. Si elle est définie par l'accès aux ressources, une ressource mutuellement exclusive permet à un seul visiteur d'y accéder en même temps, ce qui est unique et exclusif. Mais l’exclusion mutuelle ne peut pas limiter l’ordre dans lequel les visiteurs accèdent aux ressources, c’est-à-dire que l’accès n’est pas ordonné.

Ce qui précède est tout le contenu de cet article. Cet article présente principalement les connaissances pertinentes des threads dans python. est dit ci-dessus. J'espère que ce que j'ai décrit dans cet article vous sera utile et vous facilitera l'apprentissage de Python. Pour plus de connaissances connexes, veuillez visiter la colonne

Tutoriel Python

du site Web php chinois.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal