【发布时间】:2013-06-10 04:59:19
【问题描述】:
我有一个非常简单的 Python 脚本,它使用 gevent.pool 下载 URL(见下文)。该脚本运行了几天,然后锁定。我注意到当时内存使用率非常高。我是否错误地使用了 gevent?
import sys
from gevent import monkey
monkey.patch_all()
import urllib2
from gevent.pool import Pool
inputFile = open(sys.argv[1], 'r')
urls = []
counter = 0
for line in inputFile:
counter += 1
urls.append(line.strip())
inputFile.close()
outputDirectory = sys.argv[2]
def fetch(url):
try:
body = urllib2.urlopen("http://" + url, None, 5).read()
if len(body) > 0:
outputFile = open(outputDirectory + "/" + url, 'w')
outputFile.write(body)
outputFile.close()
print "Success", url
except:
pass
pool = Pool(int(sys.argv[3]))
pool.map(fetch, urls)
【问题讨论】:
-
听起来像是
gevent中的内存泄漏。快速搜索python gevent memory leak会返回惊人的大量点击,尽管您可能更容易确定其中任何一个是否适用于您的特定情况。
标签: python python-2.7 gevent