Maison  >  Article  >  développement back-end  >  Comment comprendre les processus et les threads en python ?

Comment comprendre les processus et les threads en python ?

乌拉乌拉~
乌拉乌拉~original
2018-08-23 17:41:321355parcourir

Dans l'article suivant, examinons ce que sont les processus et threads en python . Découvrez les processus et les threads Python, ainsi que le rôle que les processus et threads Python peuvent jouer dans la programmation Python.


Qu'est-ce que le « multitâche » ? En termes simples, le système d'exploitation peut exécuter plusieurs tâches en même temps. Par exemple, vous surfez sur Internet à l'aide d'un navigateur, écoutez des lecteurs MP3 et rattrapez vos devoirs dans Word. Il s'agit d'un travail multitâche. Au moins trois tâches sont exécutées en même temps. De nombreuses tâches s'exécutent silencieusement en arrière-plan en même temps, mais elles ne sont pas affichées sur le bureau.

De nos jours, les processeurs multicœurs sont devenus très populaires, mais même les processeurs monocœur du passé pouvaient effectuer du multitâche. Puisque le code d’exécution du processeur est exécuté séquentiellement, comment un processeur monocœur effectue-t-il plusieurs tâches ?

La réponse est que le système d'exploitation exécute à tour de rôle chaque tâche en alternance. La tâche 1 s'exécute pendant 0,01 seconde, passe à la tâche 2, les tâches 2 s'exécutent pendant 0,01 seconde, puis passe à la tâche 3, s'exécute pendant 0,01 seconde. ... et ainsi de suite. En apparence, chaque tâche est exécutée alternativement, mais comme la vitesse d'exécution du processeur est si rapide, nous avons l'impression que toutes les tâches sont exécutées en même temps.

Une véritable exécution parallèle du multitâche ne peut être réalisée que sur un processeur multicœur. Cependant, comme le nombre de tâches est bien supérieur au nombre de cœurs du processeur, le système d'exploitation planifiera automatiquement de nombreuses tâches pour. chaque noyau s'exécute à son tour.

Pour le système d'exploitation, une tâche est un processus (processus). Par exemple, l'ouverture d'un navigateur démarre un processus de navigateur, l'ouverture d'un bloc-notes démarre un processus du bloc-notes et l'ouverture de deux processus du bloc-notes est démarrée, et un processus Word est démarré lorsqu'un Word est ouvert.

Certains processus peuvent faire plus d'une chose en même temps, comme Word, qui peut effectuer la saisie, la vérification orthographique, l'impression, etc. Au sein d'un processus, si vous souhaitez effectuer plusieurs choses en même temps, vous devez exécuter plusieurs « sous-tâches » en même temps. Nous appelons ces « sous-tâches » dans les threads du processus.

Puisque chaque processus doit faire au moins une chose, un processus a au moins un thread. Bien entendu, un processus complexe comme Word peut avoir plusieurs threads, et plusieurs threads peuvent être exécutés en même temps. La méthode d'exécution du multi-thread est la même que celle de plusieurs processus. Le système d'exploitation bascule également rapidement entre plusieurs threads. permettant à chaque thread de s'exécuter alternativement brièvement, semblant s'exécuter simultanément. Bien entendu, l’exécution véritable de plusieurs threads simultanément nécessite qu’un processeur multicœur soit possible.

Tous les programmes Python que nous avons écrits précédemment sont des processus qui effectuent des tâches uniques, c'est-à-dire qu'il n'y a qu'un seul thread. Et si nous voulons effectuer plusieurs tâches en même temps ?

Il existe deux solutions :

La première consiste à démarrer plusieurs processus. Bien que chaque processus n'ait qu'un seul thread, plusieurs processus peuvent effectuer plusieurs tâches ensemble.

Une autre méthode consiste à démarrer un processus et à démarrer plusieurs threads en un seul processus, afin que plusieurs threads puissent effectuer plusieurs tâches ensemble.

Bien sûr, il existe une troisième méthode, qui consiste à démarrer plusieurs processus, et chaque processus démarre plusieurs threads, afin que plus de tâches puissent être exécutées en même temps. Bien sûr, ce modèle est plus complexe et l'est. rarement utilisé en pratique.

Pour résumer, il existe trois façons de mettre en œuvre le multitâche :

1. Mode multi-processus ;

2. .Mode multi-processus + multi-thread.

Exécutez plusieurs tâches en même temps. Habituellement, les tâches ne sont pas sans rapport, mais doivent communiquer et se coordonner les unes avec les autres. Parfois, la tâche 1 doit être mise en pause et attendre que la tâche 2 soit terminée avant de pouvoir continuer. exécuter. Parfois, la tâche 3 et la tâche 4 ne peuvent pas être exécutées en même temps, donc la complexité des programmes multi-processus et multi-thread est beaucoup plus élevée que celle du programme mono-processus et mono-thread que nous avons écrit plus tôt.

En raison de la grande complexité et de la difficulté du débogage, nous ne voulons pas écrire du multitâche à moins que nous y soyons obligés. Cependant, il arrive souvent qu’il soit impossible de se passer du multitâche. Pensez à regarder un film sur un ordinateur. Un thread doit lire la vidéo et un autre thread lit l'audio. Sinon, si elle est implémentée dans un seul thread, la vidéo ne peut être lue qu'en premier, puis l'audio, ou l'audio doit être lu en premier. et puis la vidéo Ce n'est évidemment pas possible.

Python prend en charge à la fois le multi-processus et le multi-threading.

Ce qui précède est tout le contenu de cet article. Cet article présente principalement les connaissances sur les processus et les threads en python

J'espère que vous pourrez utiliser les informations pour comprendre le contenu 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!

Déclaration:
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