La différence entre le pool de threads Python et le multithreading
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.
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 ThreadPoolExecutorLe 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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

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

Clothoff.io
Dissolvant de vêtements AI

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

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.

CheckifSilentModeiSenabled - Flipthering / silentswitchoniphoneoradjustVolumesettingSonAndroidtoenSuretherineris

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

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.

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.

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

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.