线程

线程

  1. 线程是cpu执行的基本单元
  2. 线程之间的执行是无序的
  3. 统一进程下的现成的资源是共享的 (线程锁,互斥锁)
  4. 线程可以实现多任务,多用来处理I/O密集型任务
  5. GIL:由于python的CPython解释器的原因,存在一个GIL全局解释器锁
  6. 用来保证同一时刻只有一个线程在执行,类似于单核处理,所有说多线程并不能。
  7. 充分的利用cpu资源

线程池

  1. 在涉及到多任务的情况下,往往需要大量的线程去执行任务
  2. 这时如果手动创建线程不太方便,高效,我们可以使用线程池创建线程,执行任务.
  3. 线程池中的县城任务跳读不需要任何干预.
线程
使用模块import threading
threading.Thread()target:县城要执行的目标函数 name:线程名称 args:传参数(元组) kwargs:传参数 (字典)
start()方法开启线程
join()方法线程堵塞
daemon = False(后台线程,主线程约束子线程谁知结束)
线程执行是无顺序的
线程支援是共享的
多线程爬虫(生产者,消费者模式)
任务队列
爬取线程
数据队列
解析线程
线程池
concurrent.futures import ThreadPoolExecutor
创建一个线程池
pool = ThreadPoolExecutor(max_workers=8)
往线程池中提交任务fn(要执行的任务),*args(要传递的参数),**kwargs (要传递的参数)result = pool.submit(crawlPageData,url,name=‘1808’)
给线程添加后调方法(add_done_callback添加的是方法名)result.add_done_callback(done)

pyqyery解析库 介绍

pyquery库是jQuery的Python实现,能够以jQuery的语法来操作解析HTML文档,易用性和解析数度都很好
Pyqyery解析库的使用
初始化pq_html = pq("") pq_html = pq(filename=path_to_html_file)
.find():查找嵌套元素
.filter(selector): 根据 class, id 筛选指定元素
.eq(index): 根据索引号获取指定元素 (index从0开始)
pq_html(selector): 通过css选择器来获取目标内容
.text()获取标签的文本
.attr(‘属性值’):获取标签属性

线程锁

创建线程
target:执行的函数
name:设置线程的名称
args:给执行的函数传递参数(tuple)
kwargs:给执行的函数传递参数(dict)
daemon:默认为Flase,主线程结束,不影响子线程执行
daemon:为True,主线程结束,子线程结束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值