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 线程池/进程池/协程 惯用写法

以下分别用线程池、进程池、协程三种方法演示了异步请求的方式。

套路就是如此,剩下的就是和自己的代码匹配了?

from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
import asyncio
import httpx


urls = [f'https://www.1001freedownloads.com/free-photos/?page={i}&ajax=1' for i in range(1, 50)]

def get_req(url):
	try:
		response = requests.get(url, headers=headers, verify=False)
	except:
		return None
	return response


# 线程池
def get_thread():
	with ThreadPoolExecutor(max_workers=5) as executor:
		res = executor.map(get_req, urls)    # 接受所有的返回值到一个列表
	for r in res:
		if r and r[0].status_code == 200:
            do()    # 对返回值进行操作


# 进程池
def get_process():
    with ProcessPoolExecutor(max_workers=5) as executor:
        res = executor.map(get_req, urls)
    for r in res:
		if r and r[0].status_code == 200:
            do()    # 对返回值进行操作



# 以下为协程
timeout = httpx.Timeout(10, connect=10)


async def get_html(url):
	headers = {
		'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36',
	}
	async with httpx.AsyncClient(headers=headers, verify=False, timeout=timeout) as client:
		r = await client.get(url)
		return r


async def main(tasks):
	try:
		result_list = await asyncio.gather(*tasks, return_exceptions=False)
		return result_list
	except asyncio.TimeoutError:
		print('超时')


def run():
	tasks = [get_html(url) for url in urls]
	result_list = asyncio.run(main(tasks))
	for result in result_list:
		print(result)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章           查看所有文章
加:2021-11-20 18:45:47  更:2021-11-20 18:48:51 
 
开发: 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年7日历 -2024/7/3 21:18:37-

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