我想使用python自動化一些大數據文件處理。困惑python subprocess內循環
的處理的垂耳被鏈接,即SCRIPT1寫入一個文件,即隨後由SCRIPT2處理,則通過script3等SCRIPT2的輸出
我正在使用的螺紋上下文子模塊。
我有一個類創建鏈接腳本的元組 (「scr1.sh」,「scr2.sh」,「scr3.sh」)。
然後使用像
for script in scriplist:
subprocess.call(script)
我的問題呼叫中的另一類是在for循環,是每個腳本後,才subprocess.call(SCRIPT1)稱爲返回一個成功RETCODE?
或者是因爲我使用的是subprocess.call,所有三個都被調用一個接一個,沒有使用「睡眠」或「等待」,我想確保第二個腳本只在第一個腳本啓動後纔開始過度。
編輯:pydoc說 「subprocess.call(* popenargs,** kwargs) 帶參數運行命令,等待命令完成,然後返回returncode屬性。
所以在for循環(上面)中,是否在迭代到下一個腳本之前等待每個retcode。
我是線程新手。我在此附上運行分析的類的精簡代碼。 subprocess.call循環是這個類的一部分。
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 2010-10-27 11:27:22
@Rafe Kettler:我在文檔中閱讀關於subprocess.call()的部分。如果我沒有弄錯,for循環會在下一輪for循環之前等待每個retcode - 是這種情況嗎? – harijay 2010-10-27 15:26:42