2012-03-15 33 views
5

Tôi có một tệp thực thi dưới Linux. Tôi có một bộ xử lý 8 lõi. Tôi muốn chạy 8 trường hợp khác nhau của cùng một tệp thực thi với các đối số khác nhau.làm thế nào để chạy một số thực thi bằng cách sử dụng python?

tôi đã cố gắng

 os.system("process_name args") 

Nó không trả lại cho đến khi quá trình này kết thúc.

Tôi muốn bắt đầu 8 quy trình khác nhau từ python

Nếu ai đó có thể giúp tôi.

Thanks a lot

+0

Các quy trình này có được đảm bảo là chương trình Python hay bạn đang tìm cách khởi chạy các chương trình chung của bất kỳ loại nào? –

+0

Tôi đang tìm những cái chung – Shan

+0

chúng có thể nhưng không nhất thiết phải là quy trình python – Shan

Trả lời

6

Tôi nghĩ rằng bạn đang tìm kiếm Popen các đối tượng từ các module subprocess. Lưu ý rằng nếu bạn muốn chuyển hướng I/O đến và đi từ quá trình này, kịch bản này trở nên phức tạp vì cách được khuyến nghị để thực hiện điều này là gọi .communicate() mà bạn sẽ không thể sử dụng nếu bạn muốn quản lý nhiều tài khoản. Quay lại đầu trang quy trình đồng thời. Trên các hệ thống giống UNIX, các đường ống có thể được chuyển tới cuộc gọi hệ thống select() để bạn có thể sử dụng mô-đun select để thực hiện I/O. Điều này sẽ không hoạt động trên Windows vì việc triển khai thực hiện select() chỉ chấp nhận xử lý ổ cắm.

+0

cảm ơn rất nhiều cho câu trả lời của bạn. Tôi không muốn các quá trình giao tiếp với nhau. Nhưng chỉ nên chạy một mình. Trong trường hợp này Popen là lựa chọn đúng đắn? – Shan

+1

'communication()' không dành cho các tiến trình giao tiếp với nhau. Nếu chuyển hướng I/O qua đường ống, chỉ có quy trình gốc (chương trình Python của bạn) "giao tiếp" với con của nó. Nếu bạn không chuyển hướng các tiến trình con của I/O hoặc chuyển hướng nó vào các tệp, thì bạn sẽ không có "vấn đề giao tiếp" và chỉ có thể '.poll()' và '.returncode' để xem quá trình đã hoàn tất hay chưa. –

+6

'Popen' là giải pháp đúng cho hầu hết các giải pháp liên quan đến các tiến trình con bằng Python. –

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