现在已启动并运行多处理(from here)。
以前,由于仅使用了几个变量并创建了一个生成器,因此内存使用几乎为零。随着多处理功能的加入,使用超过12 GB的RAM的内存使用量迅速增加。
现在,我想知道如何使这段代码在使用内存方面更有效,以及为什么它甚至需要那么多。
poss = [x+1 for x in range(20)]
all_rolls = itertools.product(poss, repeat=6)
win = mp.Value('i', 0, lock = True)
draw = mp.Value('i', 0, lock = True)
loose = mp.Value('i', 0, lock = True)
def some_func(roll):
if(comparison on rolls):
with win.get_lock():
win.value += 1
elif(other comparison):
with draw.get_lock():
draw.value +=1
else:
with loose.get_lock():
loose.value +=1
with Pool(8) as p:
p.map(some_func, all_rolls)