2012-12-17 3 views
1

Я хотел бы написать функцию в Python, которая запускает select() каждые 30 секунд.Функция для запуска select()

Пока мой код выглядит следующим образом -

inputs = [ UDPSock , sys.stdin] 
outputs = [] 
while inputs: 
    readable, writable, exceptional = select.select(inputs, outputs, inputs) 
    for s in readable: 
    if s is UDPSock 
     # Deal with socket 

    elif s is sys.stdin: 
     # Deal with input 

Я хотел бы добиться чего-то вдоль линий -

inputs = [ UDPSock , sys.stdin, timer] 
outputs = [] 
while inputs: 
    readable, writable, exceptional = select.select(inputs, outputs, inputs) 
    for s in readable: 
    if s is UDPSock 
     # Deal with socket 

    elif s is sys.stdin: 
     # Deal with input 

    elif s is timer: 
     # Deal with timer 

В идеале я хотел бы это без использования многопоточности, если возможное.

ответ

4

Есть ли проблема с использованием необязательного параметра timeout на select?

например.

while True: 
    ready = readable, writable, exceptional = select.select(inputs, outputs, 
                  inputs, 30.0) 
     if not any(ready): 
      #timeout condition 
     else: 
      #iterate over the ready lists as appropriate 
+0

Спасибо! Это сработало отлично. – Fletch

+0

@Fletch, если это поможет вам принять мои ответы (кнопки тика), чтобы помочь другим, ссылающимся на этот вопрос в будущем. – cmh

Смежные вопросы