Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python标准库获取(,stream=True)_Python_Python 3.x_Http_Urllib - Fatal编程技术网

使用Python标准库获取(,stream=True)

使用Python标准库获取(,stream=True),python,python-3.x,http,urllib,Python,Python 3.x,Http,Urllib,根据ps aux,似乎import requests为我试图优化的代码添加了约4mb的RAM 请求在各自代码中的用法非常基本,我了解到“常规”的请求。get可以通过标准库实现: from urllib.request import urlopen urlopen("www.bla.com").read() 然而,在使用verify=True,stream=True的情况下 这也可以通过Python(3.8)标准库合理地实现吗?如果您是为linux目标开发的,也可能会调用二

根据
ps aux
,似乎
import requests
为我试图优化的代码添加了约4mb的RAM

请求
在各自代码中的用法非常基本,我了解到“常规”的
请求。get
可以通过标准库实现:

from urllib.request import urlopen

urlopen("www.bla.com").read()
然而,在使用
verify=True,stream=True
的情况下


这也可以通过Python(3.8)标准库合理地实现吗?

如果您是为linux目标开发的,也可能会调用二进制文件。我曾经参与过一个项目,在这个项目中我们使用了一个python库,但最终调用了一个linux工具,它是一个编译好的C二进制文件,因此性能明显高于任何python代码。我不知道curl的确切内存需求,但它可能是一种选择。它是一个非常复杂的工具,能够轻松地执行大量REST请求

获取下载网站的示例:

curl -o savedpage.html http://www.example.com/
您可以从python运行它,如下所示:

import subprocess
out = subprocess.check_output(["curl", "https://www.python.org/"])
print(out)
这可能是一种选择,但值得全面考虑,因为curl可能不会预先安装在目标机器上。您也可以在代码中提供curl二进制文件,但这要求目标文件不更改,因为您必须预编译二进制文件


因此,它不是最直接的解决方案,另一方面,它可能是一个简单的解决方案。

您使用stream=True究竟想要实现什么?向我们展示您是如何使用请求的,以及您在做什么,以便提供等效的urllib使用。您看过这个答案了吗?Python以较大的块分配内存。我非常怀疑Python请求的所有内存都是由请求造成的。如果您想测量内存分配,请不要查看操作系统记帐信息,而是使用
tracemalloc
模块。无论如何,
requests
基本上是
urllib3
周围的友好API包装,而这反过来又是
http.client
周围更强大的包装。如果您真的必须剥离库,请查看每个项目的源代码,看看您可以剥离哪些库。但是,请确保使用正确的工具来确定这一点,
ps aux
的粒度不够细,无法说明库内存占用。分叉另一个进程是否也会为该进程分配更多内存?IDK,但是分叉不是我记忆中最重要的工具。我知道这是不寻常的,有它的缺点需要考虑,但这也是为什么我增加了这个长长的免责声明和解释。这是一个有效的选择。