Home

Tags

select в python

2010-02-21 python select

Метод select предназначен для опроса блокирующих потоковых классов: стандартный ввод (stdin), запуск приложения с ожидание результата (popen), получение данных с сокета (socket).

readst,writest,errorst = select(rlist, wlist, xlist[ , timeout])
Пример получения данных с клавиатуры и результата запущенного приложения

import select
import sys
import os

loop = True

w, rr = os.popen4('ping google.com -c 5') # запускаем процесс
# добавляем в список стандартный ввод
# и поток с чтением результата запущенного процесса
input = [ sys.stdin, rr]

while loop:
    r,w,e = select.select(input, [], []) # функция опроса устройств
    for op in r:
        if op == sys.stdin:
            print ':',op.readline().rstrip()
        else:
            s = op.readline()
            # получать больше нечего, удаляем из списка опрашиваемых
            if not s: input.remove(op)
            else:
                print '>',s.rstrip()