Ist es möglich, in Python echte Parallelität aufgrund der Anwesenheit von GIL zu haben? Soweit ich weiß, erwirbt jeder Thread die GIL, bevor er ausgeführt wird, während andere Threads warten, bis die GIL freigegeben wird. Warum haben GIL, wenn es so ein Flaschenhals istWahre Parallelität in Python
Antwort
Python, erzwingt die Sprache nicht unbedingt GIL. Es sind die verschiedenen Implementierungen der Sprache, die GIL haben können oder nicht.
CPython (die de-facto-Implementierung) hat GIL. Sie können also keine wirklich parallelen Threads haben, während Sie sie benutzen. Sie können jedoch Multiprozessing verwenden, um Parallelität zu erzielen. PyPy, eine weitere Implementierung der Sprache, hat jetzt auch GIL.
Es gibt andere Implementierungen der Python-Sprache (Jython & IronPython zum Beispiel), die keine GIL haben, und Sie können Threads verwenden, um parallele Operationen auszuführen.
Cython hat eine GIL, aber Sie können es mit einer with
Anweisung freigeben.
Verbindungen der genannten Projekte:
Weitere Ressourcen zu diesem Thema:
Eine Frage, über die Programmierung Stapelaustausch: https://softwareengineering.stackexchange.com/questions/186889/why-was-python-written-with-the-gil (Dank @Rogalski)
Python Wiki: https://wiki.python.org/moin/GlobalInterpreterLock
David Beazley Vortrag - https://www.youtube.com/watch?v=Obt-vMVdM8s
Artikel von Jeff Knupp: https://jeffknupp.com/blog/2013/06/30/pythons-hardest-problem-revisited/
Warum cpython entschied, GIL zu verwenden. Welchen Vorteil es von GIL –
http://programmers.stackexchange.com/questions/186889/why-was-python-written-with-the-gil –
@FaizHalde: Es gibt Hunderte von Artikeln über das Thema im Internet –
Wenn Sie möchte über die GIL in Python lernen, würde ich vorschlagen hier zu lesen beginnen:
https://wiki.python.org/moin/GlobalInterpreterLock
Siehe Abschnitt die GIL für eine Erklärung Beseitigung warum Python noch die GIL hat.
BTW: Sie finden diese Informationen durch googeln "Python Gil" und klicken Sie auf die erste Ergebnis ... Könnte schneller sein als auf SO zu posten ...;) – Felix
- 1. Verschachtelte Parallelität in Python
- 2. Python - BaseHTTPServer.HTTPServer Parallelität und Threading
- 3. Wahre Anfänge
- 4. Wahre dynamische und anonyme Funktionen in Python möglich?
- 5. Parallelität in .Net
- 6. Parallelität in MSBuild
- 7. In JavaScript, wenn wahre Bedingung
- 8. Wahre Tablespace-Größe in Oracle
- 9. Wie Multithreading, Parallelität oder Parallelität in iOS Swift tun?
- 10. Luftstrom-Parallelität
- 11. Optimistische Parallelität
- 12. android: largeHeap = "wahre" Konvention?
- 13. Haskell lazy evaluation in Parallelität
- 14. Wie Modell Parallelität in Komponententests?
- 15. Multi-Node-Parallelität in Java
- 16. Parallelität in ADO.NET Entity Framework
- 17. Parallelität in Julia. Merkmale und Einschränkungen
- 18. Python 2.7: SQlite und Parallelität über mehrere Computer
- 19. MultipleActiveResultSets = Wahre oder mehrere Verbindungen?
- 20. wahre isometrische Projektion mit opengl
- 21. die wahre Höhe eines DIV in jQuery
- 22. Konvertieren Wahre Werte in einem String Int
- 23. Statische Funktion Parallelität ASP.NET
- 24. Ist Funktion() {} eine wahre Quine?
- 25. Haskell parMap und Parallelität
- 26. Parallelität mit SciPy.optimize
- 27. C# Datenbank-Anwendung Parallelität
- 28. Open Mp verschachtelte Parallelität
- 29. Parallelität mit scala.sys.process.ProcessBuilder
- 30. Verständnis Clojure Parallelität Beispiel
Siehe [David Beazleys GIL-Forschung] (http://www.dabeaz.com/GIL/) für viele tolle Informationen zu diesem Thema. – mshildt