2012-03-15 3 views
5

나는 리눅스에서 실행 파일을 가지고있다. 나는 8 코어 프로세서를 가지고있다. 서로 다른 인수를 사용하여 동일한 실행 파일의 8 가지 인스턴스를 실행하려고합니다. python을 사용하여 여러 실행 파일을 실행하는 방법은 무엇입니까?

나는 프로세스가 완료 될 때까지 그것은 반환하지 않습니다

 os.system("process_name args") 

을 시도했다.

나는 누군가가 나를 도와 줘요 수 있다면 파이썬

8 개 다른 프로세스를 시작합니다.

덕분에 많은

+0

이러한 프로세스가 파이썬 프로그램으로 보장되어 있습니까? 아니면 모든 유형의 일반 프로그램을 시작 하시겠습니까? –

+0

나는 일반적인 것들을 찾고 있는데 – Shan

+0

그들은 파이썬 프로세스 일 필요는 없다. – Shan

답변

6

나는 당신이 subprocess 모듈에서 Popen 객체를 찾고 생각합니다.

프로세스간에 I/O를 리디렉션하려는 경우이 시나리오는 복잡해집니다. .communicate()을 호출하는 것이 좋습니다.이 방법은 여러 개를 관리하려는 경우 사용할 수 없습니다 동시에 처리합니다. UNIX 계열 시스템에서 파이프는 select() 시스템 호출로 전달 될 수 있으므로 select 모듈을 사용하여 I/O를 수행 할 수 있습니다. select() 구현은 소켓 핸들 만 허용하기 때문에 Windows에서는 작동하지 않습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 서로 의사 소통을하기를 원하지 않는다. 하지만 그냥 혼자 서 있어야합니다. 이 경우 Popen이 올바른 선택입니까? – Shan

+1

'communicate()'는 서로 통신하는 프로세스가 아닙니다. 파이프를 통해 I/O를 리디렉션하는 경우 부모 프로세스 (Python 프로그램) 만 자식과 통신합니다. 하위 프로세스의 I/O를 리디렉션하거나 파일로 리디렉션하지 않으면 "통신 문제"가 발생하지 않고 프로세스가 완료되었는지 확인하기 위해'.poll()'및'.returncode '만 수행 할 수 있습니다. –

+6

'Popen'은 파이썬을 사용하는 자식 프로세스와 관련된 거의 모든 솔루션에 적합한 솔루션입니다. –

관련 문제