Wie kann die Parsing-Effizienz des Python-Crawlers verbessert werden?
世界只因有你
世界只因有你 2017-06-12 09:20:36
0
3
686

Jetzt verwenden wir Multithread-Crawling in der Windows-Umgebung,
benutzen beautifulsoup+lxml zum Parsen.

N Crawling-Threads->Parsing-Warteschlange->1 Parsing-Thread->Speicherwarteschlange->1 Speicher-Thread

Die Effizienz des gesamten Ausführungsprogramms hängt von den rechenintensiven Parsing-Threads ab. Wenn Sie nur die Anzahl der Parsing-Threads erhöhen, erhöht sich der Thread-Umschaltaufwand und die Geschwindigkeit wird verringert.

Entschuldigung, gibt es eine Möglichkeit, die Parsing-Effizienz deutlich zu verbessern?

Bereiten Sie sich gemäß den Anweisungen der beiden Schenkel auf die Verwendung von
Asynchrones Crawlen->Analysewarteschlange->N-Analyseprozesse->Speicherwarteschlange->Speicherthread

vor

Bereit zum Baubeginn

世界只因有你
世界只因有你

Antworte allen(3)
为情所困

其实我觉得, 你在前面N个爬取线程 可以换成协程/线程池实现, 因为你在频繁创建线程本省一种性能耗费, 用线程池虽然可以减少这部分的损耗, 但是上下文切换还是无法避免, 所以协程这方面, 应该是比较合适的.
1个解析线程 换成 进程池,多开几个进程去计算密集处理, 其余应该可以不用改, 如果还想再搞, 将核心部分用c/c++ 重写咯, 希望可以帮到你

刘奇

我的做法是多进程。多进程的好处是当单机性能不够的时候,可以随时切换为分布式爬虫。

淡淡烟草味

可以网上找下tornade异步爬虫吧,我正在用这个

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!