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