7.3 select -- Attesa del completamento dell'I/O

Questo modulo fornisce l'accesso alle funzioni select() e poll() disponibili su molti sistemi operativi. Notare che su Windows, funziona solo per i socket; su altri sistemi operativi, funziona anche per altri tipi di file (in particolare, su Unix, funziona sulle pipe). Non può essere usato su file regolari per determinare se un file è cresciuto dall'ultima lettura.

Il modulo definisce le seguenti costanti e funzioni:

exception error
L'eccezione sollevata in caso di errore. Il valore che la accompagna è una coppia contenente il codice numerico dell'errore da errno e la stringa corrispondente, come verrebbe stampato dalla funzione C perror().

poll( )
(Non supportata da tutti i sistemi operativi.) Restituisce un oggetto poll, che supporta la registrazione e deregistrazione di descrittori di file, e li registra per gli eventi di I/O; leggere la sezione 7.3.1 seguente, per i metodi supportati dagli oggetti poll.

select( iwtd, owtd, ewtd[, timeout])
Questa è una interfaccia diretta alla chiamata di sistema Unix select(). I primi tre argomenti sono sequenze di `oggetti in attesa': quindi interi che rappresentano descrittori di file od oggetti con un metodo senza parametri chiamato fileno() che restituisce un tale intero. Le tre sequenze di oggetti in attesa sono rispettivamente per input, output e `condizioni eccezionali'. Sono permesse sequenze vuote, ma tre sequenze vuote non vengono accettate da tutte le piattaforme. (Si sa che funziona su Unix ma non su Windows.) L'argomento facoltativo di timeout specifica un timeout come un numero in virgola mobile in secondi. Quando l'argomento timeout è omesso, la funzione si blocca fino a che almeno un descrittore di file non sia pronto. Un valore di timeout uguale a zero specifica un poll che non si blocca mai.

Il valore restituito è una terna di liste di oggetti pronti: reimpostazioni dei primi tre argomenti. Quando viene raggiunto il timeout senza che un descrittore di file sia pronto, vengono restituite tre liste vuote.

Tra i tipi di oggetti accettati nelle sequenze ci sono gli oggetti file Python, (e.g. sys.stdin, od oggtti ritornati dalla open() o os.popen()), oppure oggetti socket restituiti da socket.socket().. Si può anche definire una propria classe wrapper, a patto che possegga un appropriato metodo fileno() (che restituisce un descrittore di file reale, non solo un intero a caso). Note: Gli oggetti file su Windows non sono accettati, solo i socket. Su Windows, la funzione sottostante select() viene fornita dalla libreria Winsock e non gestisce descrittori di file che non siano generati dal Winsock.



Subsections
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.