IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 多线程爬虫 -> 正文阅读

[Python知识库]多线程爬虫

什么是进程与线程

首先,要明白一点,进程包合线程,一个进程至少有一个线程,但线程是依赖于进程而存在的,所以一个线程只属于一个进程。
基本概念:

进程:
是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发,我们的程序代码在没有运行时,它就只是程序, 但是当这些程序被调入内存执行,就会创建对应的进程被CPU调度。从理论角度看,是对正在运行的程序过程的抽象;从实现角度看,是一种数据结构,目的在于清晰地刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。
狭义定义:进程就是一段程序的执行过程。广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。

线程:
是进程的子任务,是CPU调度 的基本单位,实现进程内部的并发,一个程序可能包含多个功能的函数,利用多线程就可以实现多个函数同时运行。例如QQ进程里,我们可以传输大文件,在文件没有传输完成。我们仍然可以进行聊天,那么此时可以看作是两个线程,一个是传输文件,一个是 聊天,多个线程并发可以同时进行,线程互相独立,A线程可以先开始,B编程可以提前结束,A不影响B.B不影响A.各做各的路。

为什么要使用多线程爬虫

简单来说就是提高爬虫的爬取速度

所谓的多线程爬虫,指的是爬虫中的某部分程序可以并行执行,即在多条线上执行。
多线程的threading,我们可以通过导入threading模块使用多线程功能,定义一个类并继承threading.Thread类,将该类定义为一个线程。
在该类中,可以使用__init__(self)方法对线程进行初始化,在run(self)方法中编写该线程需要执行的程序,然后构造线程,并调用线程对象的start()方法启动对应的线程。

python爬虫多线程之queue

多线程保证线程安全就是让多个线程执行的情况和单线程一样,读的时候是不影响线程安全的,但如果对数据操作,增加或者删除,几个线程同时进行,就会发生删多或者增加多的情况,这时候为了保证线程安全,就可以加对象锁。

Queue 对象已经包含了必要的锁,
Queue是python多线程安全的队列实现,封装了数据结构中的队列,保证了线程之间使用队列同步数据不会出错。
也就是说使用Queue就不用使用锁去同步数据。

使用queue队列实现生产者消费者问题
另threading.condition也可实现生产者消费者问题。

示例:
生产者可以有多个,消费者可以有多个,但是市场容量是有一定限度的
一件产品。投放到市场上,市场需求可以看作一个箱子box,是容量限度
当小于box大小,即队列没有满full,生产者可以生产,否则等待消费者消费,生产者有生产效率,使用speed表示
当产品大于0,即队列不为空null,才可进行消费,否则就等待生产者生产

Queue的使用函数:

get():获取队列头部元素,并且把队列中该元素弹出

put(元素):插入元素到队列尾部

qsize():获取当前队列的元素个数

empty():判断队列是否为空

实例:
爬取多个页面的图片并存入电脑文件中。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:17:56  更:2021-11-22 12:19:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:42:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码