注意os.system()是同步的,即python在進入下一行之前等待任務完成。
下面是我在Windows 7和Python上做的簡化2.66
您應該可以根據自己的需要輕鬆修改它。
1.創建和運行,因爲我想在並行
2.運行每個任務的過程後,他們都開始我恨不得你爲什麼要使用系統調用來完成
import win32api, win32con, win32process, win32event
def CreateMyProcess2(cmd):
''' create process width no window that runs a task or without arguments'''
si = win32process.STARTUPINFO()
info = win32process.CreateProcess(
None, # AppName
cmd, # Command line
None, # Process Security
None, # Thread Security
0, # inherit Handles?
win32process.NORMAL_PRIORITY_CLASS,
None, # New environment
None, # Current directory
si) # startup info
return info[0]
# info is tuple (hProcess, hThread, processId, threadId)
if __name__ == '__main__' :
handles = []
cmd = 'cmd /c "dir/w"'
handle = CreateMyProcess2(cmd)
handles.append(handle)
cmd = 'cmd /c "path"'
handle = CreateMyProcess2(cmd)
handles.append(handle)
rc = win32event.WaitForMultipleObjects(
handles, # sequence of objects (here = handles) to wait for
1, # wait for them all (use 0 to wait for just one)
15000) # timeout in milli-seconds
print rc
# rc = 0 if all tasks have completed before the time out
? –
編輯問題 –
'import multiprocessing'應該更好地使用內核,因爲所有的檔案都是分開處理的。人們也可以考慮tar模塊...而不是系統調用,調用tar ...以及信息有多快,你的實現,如果它需要加速或好奇心驅動的問題。如果大部分工作是在「shell」中完成的,由於減少了I/O,管道而不是單獨的系統調用通常也是一種節省時間的選擇。 – Dilettant