python可以开多少线程_python爬虫可以开多少线程?
其实关于爬虫并没有明确多少数量开线程,因为这个是无穷的,随着时代的不断发展,每一个革新都给我们焕然一新的感觉,可能大家现在在学习的时候,已知内容是有限的,真正在不断探索以后,会发现这个内容是无穷了,小编就看到一组代码可以爬取几百万的线程数据,一起来看下吧~
1、爬虫环境
Pycharm+python3.7.0
2、进程和线程的关系:
一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
资源分配给进程,同一进程的所有线程共享该进程的所有资源。
CPU 分给线程,即真正在 CPU 上运行的是线程。
3、多线程通信实例
因为全局变量并不是线程安全的,比如说全局变量里(列表类型)只有一个 url 了,线程 B 判断了一下全局变量非空,在还没有取出该 url 之前,cpu 把时间片给了线程 C,线程 C 将最后一个url 取走了,这时 cpu 时间片又轮到了 B,B 就会因为在一个空的列表里取数据而报错,而 queue 模块实现了多生产者、多消费者队列,在放值取值时是线程安全的。
4、实例代码import threading # 导入 threading 模块
from queue import Queue #导入 queue 模块
import time #导入 time 模块
# 爬取文章详情页
def get_detail_html(detail_url_list, id):
while True:
url = detail_url_list.get() #Queue 队列的 get 方法用于从队列中提取元素
time.sleep(2) # 延时 2s,模拟网络请求和爬取文章详情的过程
print("thread {id}: get {url} detail finished".format(id=id,url=url)) #打印线程 id 和被爬取了文章内容的 url
# 爬取文章列表页
def get_detail_url(queue):
for i in range(10000):
time.sleep(1) # 延时 1s,模拟比爬取文章详情要快
queue.put("http://testedu.com/{id}".format(id=i))#Queue 队列的 put 方法用于向 Queue 队列中放置元素,由于 Queue 是先进先出队列,所以先被 Put 的 URL 也就会被先 get 出来。
print("get detail url {id} end".format(id=i))#打印出得到了哪些文章的 url
#主函数
if __name__ == "__main__":
detail_url_queue = Queue(maxsize=1000) #用 Queue 构造一个大小为 1000 的线程安全的先进先出队列
# 先创造四个线程
thread = threading.Thread(target=get_detail_url, args=(detail_url_queue,)) #A 线程负责抓取列表
url
html_thread= []
for i in range(3):
thread2 = threading.Thread(target=get_detail_html, args=(detail_url_queue,i))
html_thread.append(thread2)#B C D 线程抓取文章详情
start_time = time.time()
# 启动四个线程
thread.start()
for i in range(3):
html_thread[i].start()
# 等待所有线程结束,thread.join()函数代表子线程完成之前,其父进程一直处于阻塞状态。
thread.join()
for i in range(3):
html_thread[i].join()
print("last time: {} s".format(time.time()-start_time))
#等 ABCD 四个线程都结束后,在主进程中计算总爬取时间。
好了,以上就是关于python爬虫里的进程内容了,大家可以去了解下哦~python的内容都是无穷尽的,大家也可以开拓创新,去找到知识的彼岸。
python可以开多少线程_python爬虫可以开多少线程?相关推荐
- python获取当前线程_Python爬虫(线程,进程)
第一章 线程的使用 并发:指的是任务数多余cpu核数 并行:指的是任务数小于等于cpu核数,即任务真的是一起执行的 1.线程的概念 线程就是在程序运行过程中,执行程序代码的一个分支,每个运行的程序 ...
- python爬取收费素材_Python爬虫练习:爬取素材网站数据
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 在工作中的电子文案.ppt,生活中的新闻.广告,都离不开大量的素材,而素材 ...
- python通过ip池爬_python 爬虫 代理ip池(适合初学者)
初次学习python爬虫的朋友在频繁访问被爬取页面网站时都会被拦截,也就是限制ip.这里教教大家建立代理ip池. #!/usr/bin/env python3# -*- coding: utf-8 - ...
- python 协程、进程、线程_Python 中的进程、线程、协程
1. 进程 进程是正在运行的程序实例,是内核分配资源的最基本的单元.进程拥有自己独立的堆和栈,独立的地址空间,资源句柄.进程由 OS 调度,调度开销较大,在并发的切换过程效率较低. Python 提供 ...
- pythonmultiprocessing之 queue线程_python中的进程、线程(threading、multiprocessing、Queue、subprocess)...
Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...
- python爬虫进程和线程_python爬虫番外篇(一)进程,线程的初步了解-阿里云开发者社区...
整理这番外篇的原因是希望能够让爬虫的朋友更加理解这块内容,因为爬虫爬取数据可能很简单,但是如何高效持久的爬,利用进程,线程,以及异步IO,其实很多人和我一样,故整理此系列番外篇 一.进程 程序并不能单 ...
- python爬虫文件下载很慢卡住线程_python爬虫多线程假死怎么解决?
抓baidu数据,但跑不了多久就假死,无反应也不报错,初学python,搞了两礼拜没搞明白,望各位前辈指点下 #coding:utf-8 ''' 百度排名查询,代理多线程版本 ''' import S ...
- python高阶面试题_Python 爬虫面试题 170 道:2019 版
通过本场 Chat,你将获得如下知识点:掌握 Python 的基础语法 语法常见的 Python 应用场景 掌握 Python 闭包的使用以及装饰器的使用 生成器和迭代器的使用 常见的设计模式的使用 ...
- python什么时候用框架_python爬虫-什么时候选择selenium框架框架?
不知不觉已经从事Python编程开发5年了,Python刚开始其实不是很起眼,但是随着大数据越来越活,现在Python也越来越火了,但是目前我主要从事的Python工作还是以数据挖掘.数据爬虫技术深度 ...
最新文章
- 《Adobe InDesign CS5中文版经典教程》—第1课1.7节使用上下文菜单
- 关于导出excel 把一个dataset的多个datatable导入到一个excel的多个sheet中
- 移动web前端下拉刷新效果
- Android 实用开源控件
- 中科大 计算机网络15 DNS域名解析系统
- JDBC批量Insert深度优化(有事务)
- elastic集群单节点停机维护
- Linux 命令缩写
- MAC Home-brew 和 Home-brew Cask
- 【转】如何删除一个repository(仓库)
- 标准库Allocator的简易实现(二)
- 浪潮信息服务器哪个好,华为服务器和浪潮服务器哪个好?
- GooglePlay内购服务器验单配置
- diamond java_Diamond语法何时在Java 8中不起作用?
- [洛谷P3527] [POI2011]MET-Meteors
- android 读build.prop,Android系统下的build.prop文件
- 基于自适应反向学习的黏菌算法
- 女生学计算机和师范类哪个好,什么专业适合女生学
- python控制苹果手机触摸屏失灵怎么办_iPhone手机触屏不灵敏怎么办 触屏失灵乱跳等问题解决方法大全必看...
- iptables防火墙
热门文章
- 【★★★★★】提高PHP代码质量的36个技巧
- joomla第一单元第四节K2类别设置和第五节项目视图选项
- 数据挖掘应用案例:RFM模型分析与客户细分(转)
- 君正4750开发板使用日记2-Linux环境搭建与内核编译
- windows下mysql备份脚本
- 谁说SELINUX,IPTABLES,SAMBA不能共存?
- Insert增加数据
- 开电视显示网管服务器数据下发超时,关于网络管理中的常见问题解决
- Python程序设计语言基础05:函数和代码复用
- C语言中机考投机取巧的方法,计算机二级C语言考试机试经验三部曲:备考篇(一)...