我是新來的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