python - 在Python中使用BeautifulSoup打开页面的多线程或多处理

标签 python multithreading beautifulsoup

我有一个程序,可以使用 beautifulsoup 打开一长串网页,并从中提取数据。

显然它相当慢,因为它必须等待每个任务完成。我想让它一次检索多个以加快速度。

我知道Python中的多线程很多时候比使用单线程慢。 什么是最好的呢?多线程还是创建多处理?

最佳答案

这是使用 scrapy 的主要原因之一,scrapy 建立在twisted 库之上,可以使 http 调用异步而不使用多线程和多处理

一个好的起点可以是优秀的 scrapy tutorial

还值得注意的是,在多核环境中进行大量 CPU 计算时,多线程/处理通常是正确的方法,但是当涉及并行 IO 操作时,您最好选择异步编程解决方案,而不是让线程阻塞等待在占用系统资源的同时进行某些 IO 操作。

关于python - 在Python中使用BeautifulSoup打开页面的多线程或多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21166849/

相关文章:

java - 使用 JList 的 SwingUtilities invokeLater GUI 更新

javascript - 尝试过 Python BeautifulSoup 和 Phantom JS : STILL can't scrape websites

python - BeautifulSoup 和 python 。无法通过递归获取所有节点,因为出现 "maximum recursion depth exceeded while calling a Python object"错误

python - 使用类型化 uuid 而不是字符串 uuid 查询 portal_catalog

python - 你如何在 Heroku 上使用 APScheduler 安排 cron 作业?

java - 线程池工作线程被 Runnables 淹没导致 JVM 崩溃

c++ - 为每次 c++ 创建一个障碍

Python bs4 : How to Repeat "For" Loop with a Different Expression List if a Certain Condition is Met?

python - 在python中异步获取和存储图像

python - 如何在 sqlalchemy 中提交之前应用列默认值