use*_*375 5 python gevent python-requests
这是脚本的精简版本,导致内存使用量持续增加,我看到它在2分钟后超过600MB:
import requests
import grequests
lines = (grequests.get(l.strip(), timeout=15) for l in open('links.txt') if len(l.strip()))
for r in grequests.imap(lines, size=20):
if r.ok:
print r.url
Run Code Online (Sandbox Code Playgroud)
links.txt是一个包含大量网址的文件,问题出现在我收集的几个大网址组中.在我看来,响应对象可能没有被尊重?
我今天更新了gevent,请求和问候,这是他们的版本:
In [2]: gevent.version_info
Out[2]: (1, 0, 0, 'beta', 3)
In [5]: requests.__version__
Out[5]: '0.13.5'
Run Code Online (Sandbox Code Playgroud)
grequests没有我能找到的版本号.
提前感谢您的任何答案.
从我的角度来看,这是因为您尝试同时打开所有链接而导致的。尝试这样的事情:
links = set(links)
while links:
calls = (grequests.get(links.pop()) for x in range(200))
for r in calls:
...rest of your code
Run Code Online (Sandbox Code Playgroud)
该代码未经测试,您会找到更好的解决方案,这应该证明您只是尝试同时打开太多链接并导致内存消耗。
| 归档时间: |
|
| 查看次数: |
1422 次 |
| 最近记录: |