vmem的用途是什么?我可以在python中使用vmem吗?

时间:2016-12-19 17:27:45

标签: python linux python-2.7 memory

在我的群集中,我只能使用20 Gb内存和230 Gb vmem。我编写了一个python脚本来调用执行文件(使用subprocess)。每次调用(func)花费大约0.5 Gb内存。我同时使用multiprocess进行多方通话。简要代码如下:

import pathos.multiprocessing as mp

def func(i):
    subprocess.call(['cp',exe_file, exe_file+str(i)])
    p = subprocess.Popen(['./'+exe_file+str(i)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    err = p.communicate()[1]
    p.wait()

def fun_parallel(N):
    p=mp.Pool(N)
    p.map(func,range(100))
    p.close()
    p.join()

exe_file是执行文件,N是同时运行的func的数量。 (我有很多线程,所以我可以设置N等于16,32,64,......不需要考虑线程的限制)

我的问题很简单,

  1. 当我设置N = 32时,它运行良好,当我设置N = 64时,它会中断
  2. OSError: [Errno 12] Cannot allocate memory

    我猜的原因是,对于N = 32,使用的存储器是32 * 0.5 = 16Gb,对于N = 64,使用的存储器是64 * 0.5 = 32Gb,高于存储器限制20Gb。

    那么vmem的用途是什么?由于我有230 Gb vmem,它能做什么吗?

    1. 我可以在python代码中避免这个问题,例如当内存快要完成时,停止调用func? (但我认为这不是一个好方法......)有没有什么好方法可以自动使用群集的各种潜力?

0 个答案:

没有答案