1) subprocess.communicate () кажется правильным вариантом для того, что вы пытаетесь сделать.И вам не нужно опрашивать процесс, общаться () возвращает только после его завершения.
2) вы имеете в виду разветвление, чтобы парализовать работу?взгляните на многопроцессорность (python> = 2.6).Запуск параллельных процессов с использованием подпроцесса, конечно, возможен, но это довольно трудная задача. Вы не можете просто вызвать функцию connect (), которая блокирует.
О вашем коде:
cmd = 'strings "%s"' % (fname)
args= shlex.split(cmd)
Почему бы не просто?
args = ["strings", fname]
Что касается этого уродливого паттерна:
res=[]
for f in file_list: res.append(forcedParsing(f))
Вы должны использовать списочные выражения всякий раз, когда это возможно:
res = [forcedParsing(f) for f in file_list]