进程、requests模块的简单使用
一、进程
1.进程间数据不共享
- import multiprocessing
- data_list = []
- def task(arg):
- data_list.append(arg)
- print(data_list)
- def run():
- for i in range(10):
- m = multiprocessing.Process(target=task,args=(i,))
- m.start()
- if __name__ == '__main__':
- run()
- # [0] #分别打印了一个列表
- # [1]
- # [2]
- # [3]
- # [4]
- # [5]
- # [6]
- # [7]
- # [8]
- # [9]
常用功能:
join、deamon、name、multiprocessing.current_process()、multiprocessing.current_process().ident/pid
- import time
- import multiprocessing
- def task(arg):
- time.sleep(2)
- print(arg)
- def run():
- print(1111111)
- p1 = multiprocessing.Process(target=task,args=(1,))
- p1.name = "pp1"
- p1.start()
- print(2222222)
- p2 = multiprocessing.Process(target=task,args=(2,))
- p2.name = "pp2"
- p2.start()
- print(33333333)
- if __name__ == "__main__":
- run()
常用功能示例
通过继承方式创建进程
- class MyProcess(multiprocessing.Process):
- def run(self):
- print("当前进度",multiprocessing.Process)
- def run():
- p1 = MyProcess()
- p1.start()
- p2 = MyProcess()
- p2.start()
- if __name__ == '__main__':
- run()
2.进程间数据共享
Queue
linux:
- q = multiprocessing.Queue()
- def task(arg,q):
- q.put(arg)
- def run():
- for i in range(1,11):
- p = multiprocessing.Process(target=task,args=(i,q))
- p.start()
- while 1:
- v = q.get()
- print(v)
- if __name__ == '__main__':
- run()
windows:
- def task(arg,q):
- q.put(arg)
- if __name__ == '__main__':
- q = multiprocessing.Queue()
- for i in range(10):
- p = multiprocessing.Process(target=task,args=(i,q))
- p.start()
- while 1:
- v = q.get()
- print(v)
Manage
linux:
- m = multiprocessing.Manager()
- dic = m.dict()
- def task(arg):
- dic[arg] = 100
- def run():
- for i in range(10):
- p = multiprocessing.Process(target=task,args=(i,))
- p.start()
- input(">>>>>>")
- print(dic.values())
- if __name__ == '__main__':
- run()
windows:
- def task(arg,dic):
- dic[arg] = 100
- def run():
- m = multiprocessing.Manager()
- dic = m.dict()
- lis = []
- for i in range(10):
- p = multiprocessing.Process(target=task,args=(i,dic,))
- p.start()
- lis.append(p)
- while 1:
- count = 0
- for p in lis:
- if not p.is_alive():
- count += 1
- if count == len(lis):
- break
- print(dic)
- if __name__ == '__main__':
- run()
3.进程锁:
和线程锁种类用法一致
4.进程池:
- import time
- from concurrent.futures import ProcessPoolExecutor
- def task(arg):
- time.sleep(2)
- print(arg)
- if __name__ == '__main__':
- pool = ProcessPoolExecutor(5)
- for i in range(10):
- pool.submit(task,i)
requests模块的简单爬虫
安装:(cmd)
pip3 install requests
pip3 install beautifulsoup4
- import requests
- from bs4 import BeautifulSoup
- from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
- def task(url):
- r1 = requests.get(url=url,headers={
- 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36'
- })
- soup = BeautifulSoup(r1.text,"html.parser")
- content_list = soup.find('div',attrs={'id':'content-list'})
- for item in content_list.find_all('div',attrs={'class':'item'}):
- title = item.find('a').text.strip()
- target_url = item.find('a').get('href')
- print(title,target_url)
- def run():
- pool = ThreadPoolExecutor(5)
- for i in range(1,50):
- pool.submit(task,'https://dig.chouti.com/all/hot/recent/%s' %i)
- if __name__ == '__main__':
- run()
以上示例用多线程好
requests模块模拟浏览器发送请求
requests.get():
线程和线程池
进程、requests模块的简单使用的更多相关文章
- python爬虫:爬虫的简单介绍及requests模块的简单使用
python爬虫:爬虫的简单介绍及requests模块的简单使用 一点点的建议: (学习爬虫前建议先去了解一下前端的知识,不要求很熟悉,差不多入门即可学习爬虫,如果有不了解的,我也会补充个一些小知识. ...
- Python基础笔记系列十二:requests模块的简单应用
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! httpbin httpbin这个网站能测试 HTTP 请求和响应的各种信 ...
- python3 urllib和requests模块
urllib模块是python自带的,直接调用就好,用法如下: 1 #处理get请求,不传data,则为get请求 2 import urllib 3 from urllib.request impo ...
- 进程、数据共享、进程锁、进程池、requests模块和bs4(beautifulsoup)模块
一.进程 1.进程间数据不共享,如下示例: import multiprocessing data_list = [] def task(arg): data_list.append(arg) pri ...
- requests模块 简单使用
目录 requests模块 简单使用 Anaconda简单了解 简单了解 requests模块 使用requests模块 爬取搜狗首页源码数据 实现一个简易的网页采集器 解决乱码问题 解决UA检测问题 ...
- 超级简单的requests模块教程
在web后台开发过程中,会遇到需要向第三方发送http请求的场景,python中的requests库可以很好的满足这一要求,这里简要记录一下requests模块的使用! 说明: 这里主要记录一下req ...
- 爬虫requests模块 1
让我们从一些简单的示例开始吧. 发送请求¶ 使用 Requests 发送网络请求非常简单. 一开始要导入 Requests 模块: >>> import requests 然后,尝试 ...
- requests 模块
发送请求 使用Requests发送网络请求非常简单. 一开始要导入Requests模块: >>> import requests 然后,尝试获取某个网页.本例子中,我们来获取Gith ...
- Python requests模块学习笔记
目录 Requests模块说明 Requests模块安装 Requests模块简单入门 Requests示例 参考文档 1.Requests模块说明 Requests 是使用 Apache2 Li ...
随机推荐
- clickHouse可视化查询工具
clickHouse以卓越的查询性能著称,目前在大数据的存储和分析领域有广泛应用,目前TreeSoft已支持clickHouse的数据在线查询分析,可以与Mysql,oracle等数据库并存操作. 1 ...
- 14、OpenCV实现图像的空间滤波——图像锐化及边缘检测
1.图像锐化理论基础 1.锐化的概念 图像锐化的目的是使模糊的图像变得清晰起来,主要用于增强图像的灰度跳变部分,这一点与图像平滑对灰度跳变的抑制正好相反.而且从算子可以看出来,平滑是基于对图像领域的加 ...
- 【VS开发】开发最小化到托盘的功能
在VC++中,想实现最小化MFC程序的时候,最小化到系统托盘,需要调用NOTIFYICONDATA类 下面我们就来讲解一下如何简单实现一个系统托盘我们以对话框程序为列 第一步:在Dlg类中//定义一个 ...
- SSM-CRUD
一.项目介绍 前端技术:query+Bootstrap+ajax+json 后端技术:SSM(spring.springMVC.mybatis).JSR303校验 数据库:mysql 服务器:tomc ...
- SpringBoot项目集成PageHelper使用
SpringBoot项目集成PageHelper使用 一.开始 地址:https://github.com/pagehelper/Mybatis-PageHelper 在spring boot ...
- Python之匿名函数使用示例
#!/usr/bin/env python # -*- coding:utf8 -*- # #匿名函数 # y = lambda x:x+1 # print(y(10)) name = 'AK' #一 ...
- centos 6.10 oracle 19c安装
centos 7以下版本安装oracle 19c 问题较多,centos 以上版本没有任何问题.记录如下. hosts文件,否则图形界面无法启动 127.0.0.1 localhost localho ...
- python 之 subprocesss 模块、configparser 模块
6.18 subprocesss 模块 常用dos命令: cd : changedirectory 切换目录 tasklist:查看任务列表 tasklist | findstr python ...
- ~request库的使用
官方文档: (中文)http://cn.python-requests.org/zh_CN/latest/ (英文)https://2.python-requests.org//en/master/a ...
- 微信小程序的页面跳转==编程式导航传参 和 标签的方法传参==以及如何过去传递过来的参数
小程序导航传参接收传递过来的参数 在onload中 实例