Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Имею консольную утилиту, не могу написать гуи, Небуферизованный вывод, открытие каналов 
:(
    Опции темы
aspolyakov
Дата 5.1.2009, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.9.2008
Где: Russia, Urals, Ye katerinburg

Репутация: нет
Всего: нет



Добрый день подскажите что мне использовать для след. задачи: Написания фронтенда для конс. утилиты,  фронтенд должен в реальном времени обрабатывать вывод первой программы.

Одна програмка печатает ход своего выполнения, вторая читает и меняет прогресс бар.
Отрывок из 
Цитата

     if showProgress:
         while processedRecordsAmount<totalRecords:
             if ( processedRecordsAmount/percent > lastPercentage ):
                 seconds = time.time() - timeStamp
                 seconds = int ( seconds )
                 if seconds>0:
                     #seconds = 1
                     timeStamp = time.time()
                     perSecond = int( abs( ( processedRecordsAmount - lastAmount )/seconds ) )
                     avgSum = avgSum + perSecond
                     sec = sec+1
                     avgPerSecond = avgSum / sec
                 lastAmount = processedRecordsAmount
                 lastPercentage = processedRecordsAmount/percent
                 sval = str( processedRecordsAmount/percent )+"% Remaining: "+str (totalRecords-processedRecordsAmount)+" records, Per second: "+str(perSecond)+ " , avg: "+str(avgPerSecond)+", Errors: "+str(Errors)+"\n"
                 print (sval)
#                 sys.stdout.write (sval) Пробовал за место принта
#                 sys.stdout.flush()
         sval = str( processedRecordsAmount/percent )+"% Remaining: "+str (totalRecords-processedRecordsAmount)+" records, Per second: "+str(perSecond)+ " , avg: "+str(avgPerSecond)+", Errors: "+str(Errors)+"\n"
         print (sval)# sys.stdout


Это кусок кода из гуи, в котором будет два раза запущена первая утилита. Недостаток реализации в том, что время выполнения конс утилиты как-то влияет на гуи и гуи зависает. Короче говоря, какие проблемы в коде? Что лучше использовать заместо Popen?


Цитата

        stdinpipe = subprocess.PIPE
        stdoutpipe = subprocess.PIPE
        p = subprocess.Popen('c:\import.bat',
                     universal_newlines = True,
                      stdin  = stdinpipe,
                      stdout = stdoutpipe, 
                      stderr = subprocess.PIPE)
        percent = 0
        s=''
        self.form.progress.setMaximum(200)
        while (True):
            self.form.setWindowTitle("Repgen "+str(self.form.progress.value()/2)+"%")
            p.stdout.flush()
            s = p.stdout.readline()
            sys.stdout.write(s)
            splitted = s.split("%")
            try:
                value = int ( splitted[0] )
                percent = percent+1
                print percent
                self.form.increase_progress_value( 1 )
                
            except:
                value = 0
            if (percent>199):
                break
        self.form.progress.setValue( 0 )
        self.form.progress.setEnabled( False )


PM MAIL WWW ICQ Skype   Вверх
aspolyakov
Дата 5.1.2009, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.9.2008
Где: Russia, Urals, Ye katerinburg

Репутация: нет
Всего: нет



У меня Python 2.5, windows
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0633 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.