This problem makes me confused
I just want to run 1 command on 18 different input file so I’ve wrote it like
while filenames or running:
while filenames and len(running) < N_CORES:
filename = filenames.pop(0)
print 'Submiting process for %s' % filename
cmd = COMMAND % dict(filename=filename, localdir=localdir)
p = subprocess.Popen(cmd, shell=True)
print 'running:', cmd
running.append((cmd, p))
i = 0
while i < len(running):
(cmd, p) = running[i]
ret = p.poll()
if ret is not None:
rep = open('Crux.report.%d' % (report_number), 'w')
rep.write('Command: %s' % cmd)
print localdir
print 'done!'
report_number += 1
running.remove((cmd, p))
else:
i += 1
time.sleep(1)
But when I’ve run it after 3 hours all of the process going to Sleep mode.
But if I call the command from terminal manually (for all of the different files), all of them have been Ok.
Any help would be appreciate.
I assume you want to run 18 processes (one process per file) with no more than
N_CORESprocesses in parallel.The simplest way could be to use
multiprocessing.Poolhere: