| Hjem | Hardware | Netværk | Programmering | software | Fejlfinding | systemer | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringssprog
  • Delphi programmering
  • Java programmering
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl programmering
  • Python Programming
  • Ruby Programming
  • Visual Basics Programmering
  •  
    Computer Viden >> Programmering >> Python Programming >> Content
    Hvad er en Python GIL
    ? Hvis du har arbejdet med Python og ønsker at begynde at eksperimentere med mere avancerede programmering teknikker , lære om global tolk lås ( GIL ) er en god idé. GIL er en algoritme , der håndterer udførelsen af ​​flere tråde i et Python program. GIL er et krav , når du arbejder med flere tråde , fordi CPython hukommelse ledelsen ikke er thread- safe. Desuden har GIL været kendt for at nedbryde en programmer ydeevne . Et eksempel er, at det kan tage længere tid for to tråde til at kalde den samme funktion end én tråd kalder funktionen to gange . Brug GIL

    I et multi -threaded Python -program en tråd kan ikke sikkert at få adgang Python objekter , medmindre GIL ejes af den aktuelle tråd. Den GIL sørger for, at begge tråde korrekt opdaterer objektreferencer bliver kaldt . At begynde at bruge GIL skal du gemme tråden stat i en placering variabel og slip den globale tolk lås. På dette punkt kan du udføre dit blokerende input /output drift og generhverve den globale tolk låsen, når den er færdig. Endelig genoprette tråden staten fra den lokale variabel. Du kan bruge følgende makro eksempel at forenkle processen :

    Py_BEGIN_ALLOW_THREADS ... Har nogle blokerende I /O operation ... Py_END_ALLOW_THREADS
    Calling Python Code

    Ofte tråde oprettet fra andre programmeringssprog såsom C og hvis du har brug for at ringe flere tråde så er du nødt til at bruge GIL . Du skal først registrere disse tråde med en tolk via en tråd state datastruktur og derefter erhverve GIL . For at forenkle denne proces kan du bruge " PyGILState_Ensure () " og " PyGILState_Release () "-funktionerne . Det følgende er et eksempel på, hvordan man kan anvende dette koncept : Hej

    PyGILState_STATE gstate , gstate = PyGILState_Ensure () ;/* Udfør Python handlinger her. * /result = CallSomeFunction () ;/* evaluere resultat eller håndterer undtagelsen * //* Slip tråd. Ingen Python API tilladt over dette punkt . * /PyGILState_Release ( gstate )
    Python Tråde

    Python en tråd er et virkeligt system tråden som ethvert andet program udførelse. Når du udfører en tråd Python skaber en lille datastruktur med tolken stat. Efter dette en ny tråd er lanceret , og det kalder " PyEval_CallObject . " Det sidste trin er en simpel C-funktion , der kører uanset Python angivet. Den GIL omhyggeligt kontrollerer hvert tråd udførelse. Det følgende er et eksempel på en Python tråd : Hej

    import timeimport threadingclass CountdownThread ( threading.Thread ) : def __ init__ (selv , count) : threading.Thread.__init__ (selv-) self.count = countdef run ( self ) : mens self.count > 0: print " tælle ned" , self.countself.count - = 1time.sleep (5) retur
    GIL Problemer og udskiftning

    Python udviklere har diskuteret afskaffelse af GIL , men er løbet ind i nogle udfordringer . Et problem ofte nævnt med GIL er, at det forhindrer flertrådede CPython programmer drage fuld fordel af multi -core processorer . Enhver GIL udskiftning skal være enkel og samtidig når man arbejder med tråde. Skal være hurtigere end GIL og skal have en god API kompatibilitet. Et eksempel for API kompatibilitet er at have en god sporing , når der opremses de objekter den peger på .

    Forrige :

    næste :
      Relaterede artikler
    ·Hvad Er PYC Files 
    ·Hvad er Python Kodning 
    ·Sådan bruges Python Apache 
    ·Sådan Ping API Med Python 
    ·Sådan Opadtællende på en enkelt linje i Python 
    ·Brugen af Python Numeric.Arange Function 
    ·Sådan downloader filer fra websider med Python 3.X 
    ·Sådan konstateres , om et tegn Mellemrum i Python 
    ·Sådan spiller en WAV fil i Python 
    ·Geoprocessering Med Python 
      Anbefalede Artikler
    ·Hvordan man opbygger en GUI i Visual Basic 
    ·Sådan Indsæt en CNC Underprogram 
    ·Hvordan kan man se Hvis en funktion Call er statisk ell…
    ·Sådan oprettes forbindelse til en hjemmeside med Visua…
    ·Forskellen mellem Exit & Dø i Perl 
    ·Sådan Format til Dollars i Java 
    ·Sådan bruges OracleDataAdapter at opdatere en Datasour…
    ·Monoalphabetic Substitution Ciphers i Java -kode 
    ·Sådan oprettes en blinkende grænsen på DIV 
    ·Sådan fjernes den første tomme linje i PHP 
    Copyright © Computer Viden http://www.computerdk.com