在python循环中清除内存

时间:2015-07-30 09:59:45

标签: python for-loop memory-management parallel-processing

我如何在这个python循环中清除内存?

import concurrent.futures as futures
with futures.ThreadPoolExecutor(max_workers=100) as executor:
    fs = [executor.submit(get_data, url) for url in link]
    for i, f in enumerate(futures.as_completed(fs)):
        x= (f.result())
        results.append(x)
        del x 
        del f

get_data - 使用请求的简单函数

2 个答案:

答案 0 :(得分:1)

我的解决方案是这样的:
将concurrent.futures导入为期货

#split the original grand list into smaller batches  

batchurlList = [grandUrlList[x:x+batchSize] for x in range(0, len(grandUrlList), batchSize)]
for tmpurlList in batchurlList:
    with futures.ThreadPoolExecutor(max_workers=100) as executor:
        myfuture = {executor.submit(myFunction, url): url for url in tmpurlList}
        for future in futures.as_completed(myfuture, timeout=60):
            originalUrl = myfuture[future]
            results.append(future.result())

答案 1 :(得分:0)

我认为我最近遇到了同样的问题,答案不是del而是引入睡眠功能...尝试;

import time
import concurrent.futures as futures
with futures.ThreadPoolExecutor(max_workers=100) as executor:
    fs = [executor.submit(get_data, url) for url in link]
    for i, f in enumerate(futures.as_completed(fs)):
           x= (f.result())
           results.append(x)
           time.sleep(n_seconds)

或类似的东西(我在网址列表上使用了一个while循环)