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
Bereit zum Baubeginn
其实我觉得, 你在前面
N个爬取线程
可以换成协程/线程池
实现, 因为你在频繁创建线程本省一种性能耗费, 用线程池虽然可以减少这部分的损耗, 但是上下文切换还是无法避免, 所以协程这方面, 应该是比较合适的.1个解析线程
换成进程池
,多开几个进程去计算密集处理, 其余应该可以不用改, 如果还想再搞, 将核心部分用c/c++
重写咯, 希望可以帮到你我的做法是多进程。多进程的好处是当单机性能不够的时候,可以随时切换为分布式爬虫。
可以网上找下tornade异步爬虫吧,我正在用这个