我正在尝试在python中并行化for循环。在参数的排列阶段我得到了一个记忆错误。你知道吗
我能理解为什么这样做可能会失败,但另一种做同样事情的方法是什么。你知道吗
import itertools
import multiprocessing
LOAD_GEN_KEYS = range(138259)
ES_DATA_K = range(9606834)
paramlist = list(itertools.product(LOAD_GEN_KEYS, ES_DATA_K))
pool = multiprocessing.Pool()
VALID_TS = pool.map(curate_results, paramlist)
def curate_results(params):
LG = params[0]
ES = params[1]
ES_S = str(int(ES)/1000)
if ES_S == LG:
return [LG, ES]
else:
return []
任何帮助都将不胜感激。你知道吗
您正在创建138259*9606834项的列表。那对你的记忆来说太多了。你知道吗
我建议使用
itertools.product()
实际上是的生成器(即元素不是存储在内存中,而是在迭代过程中动态创建的):因为
pool.map(curate_results, paramlist)
接受iterable,所以生成器应该和列表一样好。你知道吗相关问题 更多 >
编程相关推荐