2012-03-15 17 views
5

Ho un eseguibile sotto linux. Ho un processore a 8 core. Voglio eseguire 8 diverse istanze dello stesso eseguibile con argomenti diversi.come eseguire diversi eseguibili usando python?

Ho provato

 os.system("process_name args") 

Non restituisce fino a quando il processo è terminato.

voglio iniziare 8 diversi processi in pitone

Se qualcuno mi potrebbe aiutare per favore.

Grazie mille

+0

Questi processi sono garantiti come programmi Python o stai cercando di avviare programmi generici di qualsiasi tipo? –

+0

Sto cercando quelli generali – Shan

+0

potrebbero essere ma non necessariamente i processi python – Shan

risposta

6

Penso che tu sia alla ricerca dei Popen oggetti dal modulo subprocess.

Si noti che se si desidera reindirizzare l'I/O al e dal processo, questo scenario diventa complesso poiché il modo consigliato per chiamare è .communicate() che non sarà possibile utilizzare se si desidera gestire più processi contemporaneamente. Sui sistemi UNIX, le pipe possono essere passate alla chiamata di sistema select() in modo da poter utilizzare il modulo select per eseguire I/O. Ciò non funzionerà su Windows poiché l'implementazione select() accetta solo handle di socket.

+0

grazie mille per la risposta. Non voglio che i processi comunichino tra loro. Ma dovrebbe solo funzionare da solo. In questo caso, Popen è l'opzione giusta? – Shan

+1

'communicate()' non è per processi che comunicano tra loro. Se si reindirizza l'I/O tramite pipe, solo il processo padre (il programma Python) "comunica" con i suoi figli. Se non si reindirizza l'I/O dei processi figli o lo si reindirizza ai file, non si avrà il "problema di comunicazione" e si potranno semplicemente '.poll()' e '.returncode' per vedere se il processo è terminato. –

+6

'Popen' è la soluzione giusta per quasi tutte le soluzioni che coinvolgono processi figlio che utilizzano Python. –

Problemi correlati