进程、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 ...
随机推荐
- web端自动化——selenium3用法详解
selenium中文学习文档链接:https://selenium-python-zh.readthedocs.io/en/latest/getting-started.html selenium3+ ...
- python解包
概念 python的解包可以这样来理解:把元素给拆分并把其赋值给自己所需要的变量,因此元素应该是一个可迭代对象. 形式 简单版本 下面展示的是解包的基本形式,根据长度赋值给对应多的变量. name_l ...
- docker pull 提示错误的username or password
安装完docker后,使用cli docker pull images 时,提示用户名密码错误 解决方法 使用docker ID 不要使用 Email 登陆. https://github.com/d ...
- vs.Debug.vector迭代器报错(_ITERATOR_DEBUG_LEVEL)
1.vs2017.Win7x64 std::vector<ULONG>,在 使用 *iter 取某个 ULONG时 报错,release不报错,报错信息: ZC:具体原理不明,暂时的解决方 ...
- Beginning Linux Programming 学习--chapter 11 Processes and Signals
What's process--什么是进程? The UNIX standards, specifically IEEE Std 1003.1, 2004 Edition, defines a pr ...
- PHP强制在微信中打开
if (!Func::isWx()) { exit('请在微信客户端打开链接'); } // 判断是否是微信 public static function isWx() { if ( strpos($ ...
- MaskRCNN 奔跑自己的数据
import os import sys import random import math import re import time import numpy as np import cv2 i ...
- 如何使用C++实现单链表
线性表--链表 为什么假期也在发文章 //TODO NullGirlfrindException 请忽略以上两行无聊的事实...... 如何弥补顺序表的不足之处? 第一次学习线性表一定会马上接触到一种 ...
- [转帖]负载均衡 LVS+Keepalived
负载均衡 LVS+Keepalived https://www.cnblogs.com/jicki/p/5546862.html 改天试试 一直没搞过. 系统 CentOS 5.6 X64 物理机 ...
- Spring之3:ListableBeanFactory
ListableBeanFactory在BeanFactory的位置见<Spring源码阅览——BeanFactory体系结构> ListableBeanFactory:同样扩展BeanF ...