我是新来的python子流程模块,目前我的实现没有多处理。多处理子流程
import subprocess,shlex
def forcedParsing(fname):
cmd = 'strings "%s"' % (fname)
#print cmd
args= shlex.split(cmd)
try:
sp = subprocess.Popen(args, shell = False, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
out, err = sp.communicate()
except OSError:
print "Error no %s Message %s" % (OSError.errno,OSError.message)
pass
if sp.returncode== 0:
#print "Processed %s" %fname
return out
res=[]
for f in file_list: res.append(forcedParsing(f))
我的问题:
是sp.communicate去的好办法?我应该使用投票吗?
如果我使用poll我需要一个sperate进程来监视进程是否正确完成?
我应该在
for
循环处分叉吗?
好的,我可以限制coz的分叉数量。 是的,我在linux上,文件列表可以达到10k +,所以可以这么说,像10个叉同时应该没问题(生产服务器将有8个内核,最多16GB的DDR3内存)。 – 2010-08-20 20:33:11