Grundlegendes zu Python-GIL - E / A-Bindung vs. CPU-Bindung
VonPython-Threading Dokumentation
In CPython kann aufgrund der globalen Interpreter-Sperre nur ein Thread Python-Code gleichzeitig ausführen (auch wenn bestimmte leistungsorientierte Bibliotheken diese Einschränkung möglicherweise umgehen). Wenn Sie möchten, dass Ihre Anwendung die Rechenressourcen von Multi-Core-Computern besser nutzt, sollten Sie Multiprocessing verwenden. Threading ist jedoch immer noch ein geeignetes Modell, wenn Sie mehrere E / A-gebundene Tasks gleichzeitig ausführen möchten.
Jetzt habe ich so einen Threadworker
def worker(queue):
queue_full = True
while queue_full:
try:
url = queue.get(False)
w = Wappalyzer(url)
w.analyze()
queue.task_done()
except Queue.Empty:
queue_full = False
Hierw.analyze()
zwei Dinge tun
requests
BibliothekAnalyse der HTML-Scrap-Datei mitpyv8
Javascript-BibliothekSoweit ich weiss,1
ist I / O gebunden und2
ist CPU gebunden.
Heißt das, GIL beantragt2
und mein Programm funktioniert nicht richtig?