2 weixin 40003238 weixin_40003238 于 2017.09.12 15:16 提问

gevent pool空间无法回收

使用gevent批量爬取网页,因为页面较多,不适合创建出所有的greenlet再执行,
所以用gevent.pool来做。加入到pool中的greenlet可以正常运行,但运行结束后
并没有释放pool的空间,导致pool被占满,后续任务无法执行。
代码:
g = Pool(1000)

while not urlQue.empty():
    url = urlQue.get().strip()
    g.add(g.start(gevent.spawn(thread,url)))

def thread(url):
b = downloadWorker.DownloadWorker(url)
b.run()
del b

1个回答

oyljerry
oyljerry   Ds   Rxr 2017.09.12 17:04

你可以把del g,然后重新创建一个Pool试试

oyljerry
oyljerry 你一批批的加入。执行结束了。开始下一批
4 个月之前 回复
weixin_40003238
weixin_40003238 那我就没法控制并发了啊
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!