Maison Problème commun La différence entre le pool de threads Python et le multithreading

La différence entre le pool de threads Python et le multithreading

Jun 20, 2023 pm 04:51 PM
Pool de fil Python

La différence entre le pool de threads python et le multithread : 1. Les threads voyagent sous le processus ; 2. Les threads voyagent sous le processus ; 3. Un processus peut contenir plusieurs threads ; 4. Les données sont difficiles à partager entre différents processus ; . Processus Consomme plus de ressources informatiques que de threads.

La différence entre le pool de threads Python et le multithreading

1. Threads et multi-threads

Processus : Lorsqu'un programme est exécuté, il peut être appelé un processus, qui inclut le programme en cours d'exécution ainsi que la mémoire et les ressources système utilisées par le programme. plusieurs threads Composé de.

Thread : Un thread est un flux d'exécution dans un programme. Chaque thread a son propre registre privé et la zone de code est partagée. Différents threads peuvent exécuter la même fonction.

Multi-threading : Le multithreading signifie qu'un programme contient plusieurs flux d'exécution, c'est-à-dire qu'un programme peut exécuter plusieurs threads différents en même temps pour effectuer différentes tâches, permettant à un seul programme de créer plusieurs threads d'exécution parallèles pour accomplir leurs tâches respectives.

Le plus grand avantage du multi-threading : Améliorer l'utilisation du processeur (particulièrement adapté aux programmes gourmands en E/S, l'amélioration de la vitesse est particulièrement évidente)

La différence entre les processus et les threads :

Une métaphore simple : processus = train, thread = chariot

Les threads voyagent sous le processus (un simple wagon ne peut pas fonctionner)

Un processus peut contenir plusieurs threads (un train peut avoir plusieurs wagons)

Il est difficile de partager des données entre différents processus (c'est difficile pour les passagers d'un train Changement vers un autre train, comme un transfert de gare)

Les données sont facilement partagées entre différents threads dans le même processus (il est facile de passer du wagon A au wagon B)

Les processus consomment plus de ressources informatiques que les threads (en utilisant plusieurs trains Trains consomme plus de ressources que plusieurs wagons)

Les processus ne s'affecteront pas. Si un thread raccroche, l'ensemble du processus raccrochera (un train n'affectera pas un autre train, mais si le wagon du milieu d'un train, un incendie affectera tous les wagons)

Le processus peut être étendu à plusieurs machines, et le processus convient tout au plus au multicœur (différents trains peuvent circuler sur plusieurs voies, et les wagons du même train ne peuvent pas être sur des voies différentes)

Processus utilisation L'adresse mémoire peut être verrouillée, c'est-à-dire que lorsqu'un thread utilise de la mémoire partagée, les autres threads doivent attendre qu'elle se termine avant de pouvoir utiliser cette partie de la mémoire. (Par exemple, les toilettes dans le train) - "Mutex lock"

L'adresse mémoire utilisée par le processus peut limiter l'utilisation (par exemple, un restaurant dans le train, seul un nombre maximum de personnes est autorisé à entrer, si il est plein, il faut attendre à la porte que quelqu'un sorte Pour entrer) - "Sémaphore"

2. La classe threading du multi-threading

La classe threading est le module multi-threading le plus couramment utilisé. de création d'un fil est la suivante :

threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, 
daemon=None)

group : La valeur par défaut est Aucun

target : Pour Le nom de la fonction exécutée, n'oubliez pas de ne pas inclure de parenthèses de fonction

name : nom du fil, par défaut 'Thread-N. ' form.

args : tuple de paramètres de l'objet appelable passé dans le paramètre target.

kwargs : Dictionnaire de paramètres de mots clés de l'objet appelable passé dans le paramètre target.

daemon : attribut du mode Guardian, la valeur par défaut est None.

Méthodes importantes de l'objet thread :

start() : démarre le thread. Cela fera que la méthode run () est appelée dans un thread indépendant.

run() : cette méthode représente l'activité du thread

join(timeout=. Aucun) : Laissez le thread appelant actuel attendre la fin du thread

Démon : représente si le thread est un thread démon, vrai ou faux.

Créez une instance multithread :

import random
import threading
import time
def awesome_function(name):
wait_time = random.randint(1, 10)
print('current thread name is :{0} and wait {1} s'.format(name, 
wait_time))
time.sleep(wait_time)
print('thread {} finished.'.format(name))
if __name__ == '__main__':
for i in range(0, 3):
t = threading.Thread(target=awesome_function, args=(i,))
t.start()

Vous pouvez d'abord y jeter un œil. aux résultats d'exécution que j'ai enregistrés :

L'exemple ci-dessus démarre 3 threads, et 3 threads exécutent des tâches simultanément. Terminez la tâche en premier. Le thread (celui avec le temps de sommeil le plus court) affiche le résultat en premier.

Trois. -classe de pool de threads utilisée ThreadPoolExecutor

Le démarrage d'un nouveau thread est très coûteux car cela implique une interaction avec le système d'exploitation. Dans ce cas, l'utilisation de pools de threads peut considérablement améliorer les performances du programme, en particulier lorsque le programme doit créer un grand nombre de threads avec. durées de vie très courtes, vous devriez envisager d'utiliser des pools de threads.

Le pool de threads crée un grand nombre de threads inactifs lorsque le système démarre, et le programme Tant qu'une fonction est soumise au pool de threads, le pool de threads démarrera un processus inactif. thread pour l'exécuter. Lorsque la fonction se termine, le thread ne mourra pas, mais reviendra à nouveau dans le pool de threads et deviendra inactif, en attente. En même temps, l'utilisation du pool de threads peut contrôler efficacement le nombre de threads simultanés. dans le système. Lorsque le système contient un grand nombre de threads simultanés, cela entraînera une forte baisse des performances du système et même un crash de l'interpréteur Python, et le paramètre nombre maximal de threads peut contrôler le nombre de threads simultanés. dans le système pour ne pas dépasser ce nombre.

Le pool de threads actuellement utilisé est le ThreadPoolExecutor dans le module concurrent.futures :

import random
import time
from concurrent.futures import ThreadPoolExecutor
def awesome_function(name):
wait_time = random.randint(1, 10)
print('current thread name is :{0} and wait {1} s'.format(name, 
wait_time))
time.sleep(wait_time)
print('thread {} finished.'.format(name))
if __name__ == '__main__':
with ThreadPoolExecutor(max_workers=3) as t:
for i in range(0, 3):
t.submit(awesome_function, i)
Les résultats en cours d'exécution sont enregistrés comme suit :

Créez un pool de threads avec une capacité maximale de 3 Objet pool de threads, soumettez la fonction exécutée au pool de threads via submit S'il y a un thread dans le pool de threads (thread). 2) Une fois l'exécution terminée, le thread inactif (thread 3) est placé dans le pool, et ainsi de suite, jusqu'à ce que tous les threads soient terminés, le programme se termine.

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 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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment réinitialiser un ordinateur portable Lenovo? Comment réinitialiser un ordinateur portable Lenovo? Aug 22, 2025 pm 02:02 PM

ToreSetyourLenoVolaptop, UsewindowsRecoveryForasoftWarereset, AdvancedStartupForUnstablesSystems, AhardrettoRoSolvepowerissues, OrthelenoVoreCoveryPartitionTorestorefactorysettings.choosebasedonyournedsandSystemCondition.

L'icône du plateau système de l'ordinateur est désordonnée, comment l'organiser? L'icône du plateau système de l'ordinateur est désordonnée, comment l'organiser? Aug 21, 2025 pm 08:12 PM

Masquer l'icône du plateau système sans affecter le fonctionnement du programme, ne supprime que l'affichage visuel; 2. Nettoyer complètement et désactiver les éléments de démarrage non essentiels via le gestionnaire de tâches; 3. Résolvez le gâchis et désinstallez le logiciel et développez l'habitude d'annuler le regroupement et la vérification pendant l'installation, afin d'atteindre les deux objectifs de rafraîchissement visuel et d'optimisation des ressources.

Le téléphone ne sonne pas pour les appels entrants Le téléphone ne sonne pas pour les appels entrants Aug 08, 2025 am 10:43 AM

CheckifSilentModeiSenabled - Flipthering / silentswitchoniphoneoradjustVolumesettingSonAndroidtoenSuretherineris

Haitang Literature City Site officiel 2025 Dernière entrée / Haitang Culture Entrée en ligne Résumé gratuit Haitang Literature City Site officiel 2025 Dernière entrée / Haitang Culture Entrée en ligne Résumé gratuit Aug 12, 2025 pm 09:42 PM

L'entrée officielle de Haitang Literature City, un incontournable pour les amateurs de nouveaux! Vous cherchez toujours l'entrée de Haitang Literature City? Cet article rassemble le site officiel de Haitang Literature City et plusieurs adresses alternatives pour votre accès rapide. Entrée officielle et alternative de la littérature Haitang Ville: Site Web officiel: https://www.haitbook.com Adresse alternative 1: https://www.htlvbooks.com Adresse alternative 2: https://www.longmabookcn.com Adresse alternative 3: https://www.myhtebook Haitang Literature City Sites pour que vous puissiez choisir: Haitang Site 10: HTTPS

Quel est le problème avec l'appel téléphonique sans son Quel est le problème avec l'appel téléphonique sans son Aug 13, 2025 pm 06:09 PM

Les raisons pour lesquelles il n'y a pas de son sur l'appel téléphonique comprennent: les problèmes matériels (haut-parleurs endommagés, les trous d'oreillette bloqués, le mauvais contact du connecteur), les problèmes logiciels (réglage de volume trop bas, le mode silencieux est activé, la défaillance du système), les problèmes de réseau (faible force du signal, la congestion du réseau) et d'autres raisons (les casques Bluetooth sont connectés, les interférences d'application). Les solutions incluent: la vérification du matériel, l'ajustement des paramètres de volume, la désactivation du mode silencieux, le redémarrage du téléphone, la mise à jour du système, la déconnexion du casque Bluetooth et la désinstallation de l'application problématique. S'il ne peut toujours pas être résolu, veuillez contacter le support technique.

Quel est le problème avec l'appel sur un téléphone mobile sans son? Quel est le problème avec l'appel sur un téléphone mobile sans son? Aug 13, 2025 pm 06:06 PM

Les raisons pour lesquelles les appels téléphoniques Huawei sans son sont les suivants: défaillance de l'oreille, échec du logiciel, problèmes de réseau et dommages physiques. Pour les défaillances des écouteurs, vous pouvez essayer de nettoyer la réparation de l'écouteur ou de contact après-vente; Pour les défaillances des logiciels, vous pouvez mettre à jour le système ou désinstaller des applications suspectes; Pour les problèmes de réseau, vous pouvez passer à une bonne zone de signal ou contacter le fournisseur de réseau; Pour les dommages physiques, vous devez contacter la réparation après les ventes ou remplacer les composants.

Comment ajouter des en-têtes et des pieds de page à un PDF? Comment ajouter des en-têtes et des pieds de page à un PDF? Aug 11, 2025 am 11:04 AM

UseAdobecroBatProforpreciseControlByNavigatingTotools> editpdf> Header & Footer> Ajouter, inserterTextOrPlaceHolderslike & [page] et & [pages], personnaliser l'apparence et applications

Comment créer un fichier LNK avec Python Comment créer un fichier LNK avec Python Aug 14, 2025 pm 04:29 PM

Pour créer un fichier .lnk, vous devez utiliser Windows Automation Tools car Python n'a pas de support intégré; 1. Utilisez la bibliothèque PYWIN32: Après avoir installé PiPInstallpyWin32, appelez wscript.shell via win32com.client pour créer des raccourcis, en prenant en charge les chemins cibles, les descriptions, les répertoires de travail, les icônes et autres propriétés; 2. Utilisez PowerShell et Sub-Process: Exécutez la commande PowerShell pour appeler wscript.shell pour créer des raccourcis, sans bibliothèques tierces mais s'appuyer sur PowerShell; Les deux méthodes doivent s'exécuter sur Windows.