Я пытаюсь автоматизировать обработку больших файлов данных с помощью python.confused о подпроцессе python внутри цикла
обкорнать обработки прикован, т.е. script1 записывает файл, который затем обрабатывается Скрипт2, то выход Скрипт2 путем Script3 и т.д.
Я использую подпроцесс модуля в резьбовом контексте.
У меня есть один класс, который создает кортежи скопированных скриптов («scr1.sh», «scr2.sh», «scr3.sh»).
Тогда другой класс, который использует вызов как
for script in scriplist:
subprocess.call(script)
Мой вопрос заключается в том, что в этом для цикла, это каждый скрипт вызывается только после того, как subprocess.call (script1) возвращает успешный RETCODE ?.
Или все три вызова вызываются сразу после друг друга, так как я использую subprocess.call, не используя «sleep» или «wait», я хочу убедиться, что второй скрипт запускается только после первого над.
Edit: pydoc говорит "subprocess.call (* popenargs ** kwargs) команду Run с аргументами Дождитесь завершения команды, а затем вернуть атрибут код возврата.."
Итак, в цикле for (выше) он ждет каждого повторного кода перед повторением к следующему скрипту.
Я новичок в нарезке. Я прикрепляю урезанный код для класса, который проводит анализ здесь. Подпроцесс цикла является частью этого класса.
class ThreadedDataProcessor(Thread):
def __init__(self, in_queue, out_queue):
# Uses Queue
Thread.__init__(self)
self.in_queue = in_queue
self.out_queue = out_queue
def run(self):
while True:
path = self.in_queue.get()
if path is None:
break
myprocessor = ProcessorScriptCreator(path)
scrfiles = myprocessor.create_and_return_shell_scripts()
for index,file in enumerate(scrfiles):
subprocess.call([file])
print "CALLED%s%s" % (index,file) *5
#report(myfile.describe())
#report("Done %s" % path)
self.out_queue.put(path)
in_queue = Queue()
Извините, не знал о «скорости ассесса» в stackoverflow. – harijay
@Rafe Kettler: Я прочитал раздел о subprocess.call() в документе. Если я не ошибаюсь, цикл for будет ждать каждого повторного кода до следующего раунда цикла for - это случай? – harijay