"记忆泄漏"与问候?

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没有我能找到的版本号.

提前感谢您的任何答案.

Mep*_*eph 0

从我的角度来看,这是因为您尝试同时打开所有链接而导致的。尝试这样的事情:

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)

该代码未经测试,您会找到更好的解决方案,这应该证明您只是尝试同时打开太多链接并导致内存消耗。