2012-01-21 20 views
9

Câu hỏi đã có trong tiêu đề - làm thế nào để một tập lệnh python đợi cho đến khi quá trình khởi chạy với os.system() được hoàn tất? Ví dụ một mã nhưPython: chờ kết thúc quá trình khởi chạy bên ngoài

for i in range(0, n): 
     os.system('someprog.exe %d' % i) 

này sẽ khởi chạy quá trình yêu cầu n lần đồng thời, có thể làm cho máy tính của tôi đổ mồ hôi một chút)

Cảm ơn lời khuyên.

Trả lời

10

os.system() không chờ đợi cho quá trình của nó để hoàn thành trước khi trở về.

Nếu bạn thấy nó không chờ đợi, quá trình bạn đang khởi chạy có khả năng tách chính nó để chạy trong nền, trong trường hợp đó subprocess.Popen + ví dụ chờ Dor đã không giúp đỡ.

Side lưu ý: Nếu tất cả các bạn muốn được subprocess.Popen + chờ sử dụng subprocess.call:

import subprocess 
subprocess.call(('someprog.exe', str(i))) 

Đó là thực sự không có khác biệt so với os.system() khác hơn là đi qua một cách rõ ràng lệnh và đối số trong thay bàn giao nó như một chuỗi đơn.

12

Sử dụng subprocess thay vì:

import subprocess 
for i in xrange(n): 
    p = subprocess.Popen(('someprog.exe', str(i)) 
    p.wait() 

đọc thêm ở đây: http://docs.python.org/library/subprocess.html

+0

+1 không phải cho câu trả lời, nhưng cho tốc độ – joaquin

+0

@joaquin cảm ơn –

Các vấn đề liên quan