Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Programmering >> python Programming >> Content
Wat is een Python GIL ?
Als u hebt gewerkt met Python en wilt beginnen te experimenteren met meer geavanceerde programmeertechnieken , het leren over mondiale tolk lock ( GIL ) is een goed idee . GIL is een algoritme dat de uitvoering van meerdere threads in een Python programma behandelt . GIL is een vereiste als je werkt met meerdere threads omdat CPython 's memory management is niet thread - safe . Bovendien is het GIL bekend dat een programma prestaties dalen . Een voorbeeld is dat het langer kan duren voor twee threads dezelfde functie dan een draad twee keer aanroepen van de functie aan te roepen . Met behulp van GIL

In een multi - threaded Python programma een thread niet veilig Python objecten openen , tenzij de GIL is in handen van de huidige thread . De GIL zorgt ervoor dat beide draden goed zijn het object referenties worden genoemd updaten . Om gebruik te maken van de GIL je nodig hebt om de draad staat te slaan op een locatie variabele en laat de wereldwijde tolk slot . Op dit punt kunt u uw blokkeren input /output bewerking uit te voeren en weer terug te krijgen van de wereldwijde tolk -vergrendeling wanneer het voltooid is . Ten slotte , het herstel van de draad staat van de lokale variabele . U kunt de volgende macro voorbeeld gebruiken om het proces te vereenvoudigen :

Py_BEGIN_ALLOW_THREADS
... Doe wat blokkerende I /O-bewerking ... Py_END_ALLOW_THREADS
Calling Python Code

Vaak draden worden gemaakt van andere programmeertalen zoals C en als u meerdere bellen threads dan moet je GIL gebruiken . U moet eerst aan te melden deze draden met een tolk via een draad staat datastructuur en het verwerven van de GIL daarna . Om dit proces te vereenvoudigen kunt u de " PyGILState_Ensure ( ) " en " PyGILState_Release ( ) " functie gebruiken . Het volgende is een voorbeeld van hoe dit concept toe te passen :

PyGILState_STATE gstate
; gstate = PyGILState_Ensure ( ) ;/* Voer Python acties hier . * /resultaat = CallSomeFunction ( ) ;/* resultaat te evalueren of een handgreep uitzondering * //* Laat de draad . Geen Python API toegestaan ​​voorbij dit punt . * /PyGILState_Release ( gstate ) ;
Python discussies

In Python een thread is een echt systeem thread als elk ander programma-uitvoering . Bij het uitvoeren van een thread Python creëert een kleine gegevensstructuur met de tolk staat . Na dit een nieuwe thread wordt gestart en zij noemt de ' PyEval_CallObject . " De laatste stap is een eenvoudige C functie die loopt wat Python opgegeven . De GIL controleert zorgvuldig elke draad uitvoering. Het volgende is een voorbeeld van een Python thread :

import timeimport threadingclass CountdownThread
( threading.Thread ) : def __ init__ (zelf , count ) : threading.Thread.__init__ (zelf ) self.count = countdef run (zelf ) : terwijl self.count > 0 : print " Counting down" , self.countself.count - = 1time.sleep ( 5 ) return
GIL Problemen en vervanging

Python ontwikkelaars hebben de eliminatie van GIL besproken maar hebben lopen in sommige uitdagingen . Een probleem vaak genoemd met GIL is dat het voorkomt dat multithreaded CPython programma's van het optimaal gebruik maken van multi - core processors . Elke GIL vervanging moet eenvoudig en gelijktijdig zijn bij het werken met draden . Moet sneller dan GIL en moet een goede API compatibiliteit hebben . Een voorbeeld voor de API compatibiliteit is goed om te hebben traceren bij het ​​opsommen van de objecten waarnaar het verwijst .

Previous: Next:
  python Programming
·Hoe de Langste Koord van de In…
·Hoe te Swap 8 - Byte Big Endia…
·Maya Python Tutorial 
·Hoe maak je Arrays Van een CSV…
·Hoe te testen in Python Als ee…
·Hoe te Python bestanden Run in…
·Hoe te Python op HostMonster 
·Hoe te PY -bestanden converter…
·Hoe kan ik een tekst verwijder…
  Related Articles
Hoe maak je een Combo Box Maak in Visual…
Hoe maak je een Check Box Maak in Visual…
Hoe maak je een tekstvak maken in Visual…
Hoe maak je een schijf keuzelijst in Vis…
Hoe kan ik een keuzelijst maken in Visua…
Hoe kan ik een Picture Box Maak in Visua…
Hoe een bestand keuzelijst Maak in Visua…
Hoe maak je Voeg een tekstvak in Visual …
Hoe maak je een Picture Box in Visual Ba…
  Programmering Articles
·Hoe te Certificaten laden van Windows Ke…
·Datum Vergelijking in VBA 
·Hoe te Integer Overtollige gebruiken in …
·Hoe je pagina's op de Android Make 
·Hoe maak je een Row Van DataGridView beh…
·Hoe om te controleren voor een lege Grid…
·Hoe maak je een Delay in Python code inv…
·Object Required in Visual Basic 
·Hoe je tekst toevoegen in een INP File d…
Copyright © Computer Kennis http://www.nldit.com