吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5825|回复: 33
收起左侧

[Python 转载] 这可能是最快的python http请求库(类似于requests)【更新】

  [复制链接]
daimiaopeng 发表于 2020-4-17 10:47
本帖最后由 daimiaopeng 于 2020-4-29 17:25 编辑

fast_requests

2020年4月29日16:16:03更新:

介绍

用c++写的python库,真多线程多并发,性能超强,多线程下载二进制的文件效果最佳
这可能是最快的http请求库,暂支持get方法,线程多的话宽带可以跑满。
项目地址:https://github.com/daimiaopeng/fast_requests

测试: 循环get("https://baidu.com") 100 次
1.自己写的 3.4 秒
2.requests (启用session)10.5 秒
3.grequests 31.3 秒
循环get("https://www.ithome.com/") 1000次
fast_requests 20线程  100M宽带 6.5秒

要求

windows平台和python3.7.2(其它版本未知)

使用

pip

pip install requests-cpp

手动下载

下载fast_requetst_cpp.pydfast_requests.pylibcurl.dllzlibd1.dll四个文件,在项目中导入fast_requests.py
下载链接:https://2020.lanzouj.com/ic2k26h

api

#timeOut 单位为毫秒
get(urls, headers={}, nThread=5, isDebug=False, timeOut=3000, verifySsl=True)

sessionGet(urls, headers={}, nThread=5, isDebug=False, timeOut=3000, verifySsl=True)

#sessionGet和get的区别:sessionGet为每个线程持有一个session对象相当于requests的session,建议使用sessionGet速度更快
urls 请求的网址列表
headers 请求头
nThread 线程数(看自己设备配置,一般设20就差不多了)
isDebug 开启后会打印每个线程每个请求信息
timeOut 超时
verifySsl ssl验证
返回 Response 对象列表

Response 对象

Response.text 正文text文本
Response.status_code 状态码
Response.header 
Response.content() 二进制数据 
Response.Url url 
Response.elapsed 
Response.cookies 
Response.error 暂且用不了

示例代码:

import fast_requests
urls = []
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
}
for i in range(1, 200):
    urls.append("https://baidu.com")
for i in fast_requests.get(urls, headers, 20):
    print(i.text)

for i in fast_requests.sessionGet(urls, headers, 20):
    print(i.text)

原理

c++ : cpr
python : pybind11.......

免费评分

参与人数 4吾爱币 +4 热心值 +4 收起 理由
Zeaf + 1 + 1 用心讨论,共获提升!
hshcompass + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
辣丝丝小白菜 + 1 + 1 用心讨论,共获提升!
wang15399 + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

岚瑟 发表于 2020-4-29 18:47
daimiaopeng 发表于 2020-4-29 16:07
我更新了一下,你重新去github上下载或者这个链接下载:https://2020.lanzouj.com/ic2k26h,或者pip inst ...

找不到指定模块!折腾了很久依旧搞不定,这是输出的错误信息
  File "C:\Python3.6.8\lib\site-packages\fast_requests\__init__.py", line 2, in <module>
    from .fast_requests import *
  File "C:\Python3.6.8\lib\site-packages\fast_requests\fast_requests.py", line 1, in <module>
    from . import fast_requetst_cpp
ImportError: DLL load failed: 找不到指定的模块。
岚瑟 发表于 2020-4-29 18:51
daimiaopeng 发表于 2020-4-29 16:07
我更新了一下,你重新去github上下载或者这个链接下载:https://2020.lanzouj.com/ic2k26h,或者pip inst ...

3.8.2也是这个问题
File "C:\Python3.8.2\lib\site-packages\fast_requests\__init__.py", line 2, in <module>
    from .fast_requests import *
  File "C:\Python3.8.2\lib\site-packages\fast_requests\fast_requests.py", line 1, in <module>
    from . import fast_requetst_cpp
ImportError: DLL load failed while importing fast_requetst_cpp: 找不到指定的模块。
Bruce_HD 发表于 2020-4-17 11:02
huang9126 发表于 2020-4-17 11:18
支持原创,另外,目前功能是不是太简单了一些
只有一个Get方法吗?
带色的小马甲 发表于 2020-4-17 11:23
其实requests的Session对象很好用,对象内还共享cookies
 楼主| daimiaopeng 发表于 2020-4-17 11:28
带色的小马甲 发表于 2020-4-17 11:23
其实requests的Session对象很好用,对象内还共享cookies

这个我知道,问题是python不是多线程的,不能并发
 楼主| daimiaopeng 发表于 2020-4-17 11:30
huang9126 发表于 2020-4-17 11:18
支持原创,另外,目前功能是不是太简单了一些
只有一个Get方法吗?

需要post的话可以马上写,但是我觉得使用get场景最常用。
huangxu 发表于 2020-4-17 11:32
试试怎么样,谢谢
 楼主| daimiaopeng 发表于 2020-4-17 11:36
huangxu 发表于 2020-4-17 11:32
试试怎么样,谢谢

欢迎使用,请求速度取决于宽带和对方宽带
辣丝丝小白菜 发表于 2020-4-17 12:03
之前也用c++和curl搞了个类requests库,但是实现太麻烦了,而且既然用python了,对速度追求不高,requests功能强大,使用也比较简单。但还是支持一下
 楼主| daimiaopeng 发表于 2020-4-17 12:23
辣丝丝小白菜 发表于 2020-4-17 12:03
之前也用c++和curl搞了个类requests库,但是实现太麻烦了,而且既然用python了,对速度追求不高,requests ...

这个应用场景是有大量get请求的情况,然后用python处理文本,对速度的要求看项目而定。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-29 01:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表