5

gevent.pool を使用して URL をダウンロードする非常に単純な Python スクリプトがあります (以下を参照)。スクリプトは数日間正常に実行され、その後ロックされます。その時点でメモリ使用量が非常に多いことに気付きました。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)
4

1 に答える 1