python多处理内存管理

时间:2018-11-21 15:35:24

标签: python memory-management multiprocessing

现在已启动并运行多处理(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)

0 个答案:

没有答案