Heim  >  Artikel  >  Backend-Entwicklung  >  Wie viele Threads sind für einen Python-Crawler geeignet?

Wie viele Threads sind für einen Python-Crawler geeignet?

anonymity
anonymityOriginal
2019-06-12 11:19:084123Durchsuche

Ich habe vor, die Daten einer E-Commerce-Website zu crawlen. Lassen Sie uns zunächst über die Effizienz sprechen (wenn Sie zu schnell anfragen, werden Sie natürlich blockiert). der Punkt. Unter normalen Umständen denken wir als Anfänger als Erstes an die for-Schleife, die Single-Threaded ist. Dann betrachten wir die for-Schleife, um fünf Threads direkt zu öffnen. Das Problem besteht darin, dass der Rest einfach wartet, wenn mehrere Threads auf diese Weise verwendet werden.

Wie viele Threads sind für einen Python-Crawler geeignet?

Leistungsüberlegungen

Wir sind sicher, dass wir Multithreading oder Multiprozess verwenden, dann sollten wir Multithreading oder verwenden Multiprozess? Manche Leute haben bestimmte Vorurteile gegenüber Multi-Processing und Multi-Threading, nur wegen der GIL-Sperre von Python. Lassen Sie uns über den Unterschied zwischen diesen beiden Dingen sprechen.

Multithreading

Im Allgemeinen ist das Starten einer .py-Datei gleichbedeutend mit dem Starten eines Prozesses. Es gibt standardmäßig einen Thread in einem Prozess. Wir verwenden viele Threading-Methoden, um mehrere Threads in einem Prozess zu ermöglichen.

Aber hier stellt sich die Frage: Warum Multithreading verwenden?

Ich weiß, dass man zu Beginn eines Prozesses etwas Erinnerungsraum schaffen muss, der einem Haus entspricht. Wir müssen in diesem Haus arbeiten. Man kann sich eine Person als einen Thread vorstellen. Unter normalen Umständen gibt es in Ihrem Haus einen Unterschied zwischen einem Raum für 10 Personen und einem Raum für 20 Personen, da wir wissen, dass Threads standardmäßig kommunizieren können (Prozesse können nicht standardmäßig kommunizieren, dies kann jedoch mithilfe von Technologie erreicht werden), beispielsweise durch Rohre ). Multithreading kann verwendet werden, um die Richtigkeit der berechneten Daten sicherzustellen. Daher scheint eine GIL-Sperre sicherzustellen, dass nur ein Thread gleichzeitig rechnen kann.

Grundsätzlich kann man die GIL-Sperre so verstehen, dass beispielsweise wenn in diesem Raum ein Konto beglichen werden soll, nur eine Person gleichzeitig über eine Frage nachdenken kann 5 Personen in diesem Konto. Wenn ich es klar berechnen kann, benötige ich nur einen Raum von 10 Quadratmetern. Warum sollte ich also 10 Personen einstellen und 20 Quadratmeter ausgeben? Es ist also nicht so, dass es umso besser ist, je mehr Threads Sie öffnen. Aber, aber, aber bitte beachten Sie, dass bei der Berechnung dieses Kontos nicht jeder sein Gehirn (CPU-Berechnung) einsetzen muss. Sie können auch andere Dinge tun (z. B. 5 Personen teilen die Arbeit auf und berechnen jeweils einen Teil). Aufzeichnen der Ergebnisse nach Abschluss der Berechnung. In diesem Fall verfügt jeder über ein eigenes Hauptbuch, sodass Multithreading für E/A-Operationen geeignet ist Je mehr Menschen, desto besser. Die Menge muss noch anhand der tatsächlichen Situation ermittelt werden.

Das obige ist der detaillierte Inhalt vonWie viele Threads sind für einen Python-Crawler geeignet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn