| maison  | Hardware  | réseaux  | programmation  | Logiciel  | Dépannage  | systèmes |  
programmation  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    Connaissances Informatiques >> programmation >> Programmation Python >> Content
    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.

    Previous :

    next :
      articles connexes
    ·Comment faire Variables sortie nombres entiers Python P…
    ·La méthode Function & classe en Python 
    ·Mutagène Python Tutorial 
    ·Comment configurer Python avec bzip2 
    ·Erreurs Unicode en Python 
    ·Comment Calculer la règle Simpson utilisant Python 
    ·Comment insérer un retard dans le code Python 
    ·Comment séparer le code HTML et Python 
    ·Comment faire des changements permanents à sys.path 
    ·Comment configurer les applications Python 
      articles en vedette
    ·Comment trouver un numéro de magie PYC un fichier Pyth…
    ·Step-by -Step Tutorial pour Eclipse UML 
    ·Comment créer une liste déroulante Utilisation de XML…
    ·Java Runtime Exec Tutorial 
    ·Comment faire pour convertir Visual Basic 5.0 à Visual…
    ·Microsoft Visual Source Safe Tutorial 
    ·Comment formater fractions en Java 
    ·Niveaux de contour dans MATLAB 
    ·Comment faire pour mettre une application Java dans une…
    ·Comment écrire simples codes Visual Basic 
    Copyright © Connaissances Informatiques http://fr.wingwit.com