Connaissances Informatiques >> programmation >> Programmation Python >> Content
  Derniers articles
  • Comment copier eBooks avec Python 
  • Comment faire une boîte d'entrée e…
  • Comment faire pour convertir les ent…
  • Comment faire pour importer une clas…
  • Liste Python écrase 
  • Fonctions avec des tableaux et des p…
  • Python Listbox 
  • Comment copier une liste contenant d…
  • Comment générer des nombres impair…
  • Comment lier Python pour Apache 
  •   Programmation Python
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    Programmation Python

    Qu'est-ce qu'un GIL Python

    Si vous avez déjà travaillé avec Python et que vous voulez commencer à expérimenter avec les techniques de programmation avancées , l'apprentissage de verrouillage interprète global ( GIL ) est une bonne idée . GIL est un algorithme qui gère l'exécution de plusieurs threads dans un programme Python. GIL est une exigence lorsque vous travaillez avec plusieurs threads , car la gestion de la mémoire de CPython n'est pas thread-safe . En outre, le GIL a été connu pour dégrader la performance des programmes. Un exemple est que cela peut prendre plus de temps pour deux threads pour appeler la même fonction qu'un thread appelant deux fois la fonction. Utiliser GIL

    Dans un programme Python multi-thread un thread ne peut pas accéder en toute sécurité des objets Python à moins que le GIL est détenu par le thread courant . Le GIL permet de s'assurer que les deux fils sont correctement mise à jour des références d'objet appelé. Pour commencer à utiliser le GIL vous devez enregistrer l'état de fil dans une variable d'emplacement et libérer le verrou de l'interpréteur mondiale. À ce stade, vous pouvez effectuer votre opération d'entrée /sortie de blocage et de réacquérir le verrou de l'interpréteur mondial quand il est complet . Enfin, restaurer l'état du fil de la variable locale. Vous pouvez utiliser l'exemple de macro suivant pour simplifier le processus : Photos

    Py_BEGIN_ALLOW_THREADS ... Faites un peu de bloquer l'opération I /O ... Py_END_ALLOW_THREADS
    Calling Python code

    Souvent threads sont créés à partir d'autres langages de programmation tels que C et si vous avez besoin d'appeler multiple threads , alors vous devez utiliser GIL . Vous devez d'abord enregistrer ces discussions avec un interprète dans une structure de données d'état du fil , puis acquérir le GIL . Pour simplifier ce processus, vous pouvez utiliser la fonction " PyGILState_Ensure ()" et " fonctions PyGILState_Release () " . Ce qui suit est un exemple sur la façon d' appliquer ce concept :

    PyGILState_STATE gstate ; gstate = PyGILState_Ensure () ;/* Effectuer des actions Python ici . * /resultat = CallSomeFunction ( ) ;/* évaluer résultat ou manipuler exception * //* Libérer le fil. Pas API Python autorisé au-delà de ce point. * /PyGILState_Release ( gstate ) ;
    Python discussions

    Python un thread est un véritable fil du système que tout autre l'exécution du programme . Lors de l'exécution d'un fil Python crée une petite structure de données avec l'état d' interprète. Après cela un nouveau thread est lancé et il appelle la " PyEval_CallObject . " La dernière étape est une fonction de C simple qui fonctionne quel que soit Python spécifiés. Le GIL contrôle soigneusement l'exécution de chaque thread. Ce qui suit est un exemple d'un fil Python :

    importation timeimport threadingclass CountdownThread ( threading.Thread ) : def __ init__ (self , count) : threading.Thread.__init__ (auto ) self.count = countdef course (auto- ) : tout self.count > 0 : print " Compte à rebours " , self.countself.count - = 1time.sleep (5) retour
    GIL problèmes et remplacement
    développeurs Python

    ont discuté de l'élimination de la GIL , mais se sont heurtées à certaines difficultés. Un problème souvent mentionné avec GIL est qu'elle empêche les programmes de CPython multithread de tirer pleinement parti des processeurs multi-core . Tout remplacement GIL doit être simple et simultanée lorsque l'on travaille avec des fils . Doit être plus rapide que Gil et doit avoir une bonne compatibilité avec les API . Un exemple de la compatibilité API est d'avoir un bon suivi lors de l'énumération des objets il pointe.

     
    Article précédent:
    Article suivant:
    Articles recommandés
  • Comment calculer l' ASIN ( X) en Python 
  • Comment calculer secondes et quelques minutes en utilisant Python 
  • Comment faire pour publier des pages Web avec Python 
  • Comment ouvrir Linux Python XRCed 
  • Comment faire pour extraire des attributs avec Python 
  • Python pour les programmeurs débutants 
  • Comment faire pour supprimer Sous-listes vides avec Python 
  • Comment télécharger les fichiers de pages Web en utilisant Python 3.x 
  • Comment faire de script exécutable Python 
  • Comment faire de noms mondiaux en Python 
  • Connaissances Informatiques © http://www.ordinateur.cc