python子进程 内存_Python:子进程内存

我想在同一时间在多个核心上运行一个串行程序,我需要多次执行(在一个循环中)。

我使用子流程.Popen通过将作业数限制为可用处理器的数量,在处理器上分配作业。我将作业添加到列表中,然后使用poll()进行检查,如果作业完成,则从列表中删除它们并继续提交,直到完成作业总数。在

我在网上查了一下,发现了一些有趣的脚本,并推出了我的改编版:nextProc = 0

processes = []

while (len(processes) < limitProc): # Here I assume that limitProc < ncores

input = filelist[nextProc]+'.in' # filelist: list of input file

output = filelist[nextProc]+'.out' # list of output file

cwd = pathlist[nextProc] # list of paths

processes.append(subprocess.Popen(['myProgram','-i',input,'-screen',output],cwd=cwd,bufsize=-1))

nextProc += 1

time.sleep(wait)

while (len(processes) > 0): # Loop until all processes are done

time.sleep(wait)

for i in xrange(len(processes)-1, -1, -1): # Remove processes done (traverse backward)

if processes[i].poll() is not None:

del processes[i]

time.sleep(wait)

while (len(processes) < limitProc) and (nextProc < maxProcesses): # Submit new processes

output = filelist[nextProc]+'.out'

input = filelist[nextProc]+'.in'

cwd = pathlist[nextProc]

processes.append(subprocess.Popen(['myProgram','-i',input,'-screen',output],cwd=cwd,bufsize=-1))

nextProc += 1

time.sleep(wait)

print 'Jobs Done'

我在一个循环中运行这个脚本,问题是执行时间从一个步骤增加到另一个步骤。这是图表:http://i62.tinypic.com/2lk8f41.png

myProgram时间执行是恒定的。

如果有人能解释一下是什么导致了这次泄密,我会很高兴的。在

非常感谢,

贝格比

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值