Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > запуск процесса


Автор: optix 8.11.2007, 16:08
ось - линукс

как запустить из скрипта другой процесс (например другой скрипт), чтобы он выполнялся параллельно

Автор: Daevaorn 8.11.2007, 16:16
В документации всё описано. Пример:
Код

import subprocess
pid = subprocess.Popen( "my_script" ).pid

Автор: optix 8.11.2007, 16:56
Цитата(Daevaorn @ 8.11.2007,  16:16)
В документации всё описано. Пример:
Код

import subprocess
pid = subprocess.Popen( "my_script" ).pid

спасибо

З.Ы. я понимаю что в документации ВСЕ описано, еще бы знать в каком разделе искать

Автор: optix 9.11.2007, 16:34
мне нужно узнать завершился ли запущенный процесс или нет

Код

import subprocess
help (subprocess,Popen)


Цитата

class Popen(__builtin__.object)
 |  .....
 |  .....
 |  poll(self, _deadstate=None)
 |      Check if child process has terminated.  Returns returncode
 |      attribute


а можно гдето узнать подробнее про метод poll, в часности что он возвращает когда процесс не завершен и что за параметр _deadstate ?

или может есть другие спосбы узнать завершился процесс или нет, может по pid 

Автор: _Viper_ 9.11.2007, 18:49
poll всегда возвращает returncode.

Цитата

Instances of the Popen class have the following methods: 

poll( ) 
Check if child process has terminated. Returns returncode attribute. 

wait( ) 
Wait for child process to terminate. Returns returncode attribute. 

The following attributes are also available: 

pid 
The process ID of the child process. 

returncode 
The child return code. A None value indicates that the process hasn't terminated yet. A negative value -N indicates that the child was terminated by signal N (Unix only). 

Автор: optix 12.11.2007, 12:35
Цитата

returncode 
The child return code. A None value indicates that the process hasn't terminated yet.


пасибо

Автор: aspolyakov 11.1.2009, 14:01
Подскажите, а что мне надо юзать, если я хочу читать что выводит запущенное в cmd в режиме реального времени? Я пробовал subprocess.Popen и communicate. Оно сначала дождется конца процесса, потом выводит. Никак не могу добится желаемого результата((( Еще пробовал sys.popen и popen2.


Код

        p = subprocess.Popen(['c:\import.bat'],stdout=subprocess.PIPE,bufsize=-1 )
        print "Pipe opened"
        percent = 0
        s=''
        self.form.progress.setMaximum(200)
        for lines in p.stdout.xreadlines():
            self.form.setWindowTitle("Repgen "+str(self.form.progress.value()/2)+"%")
            print "line: ", line
            splitted = line.split("%")
            try:
                value = int ( splitted[0] )
                percent = percent+1
                print percent
                self.form.increase_progress_value( 1 )
            except:
                value = 0
        print "Closing pipe"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)