7.3.1 Registrare oggetti

La chiamata di sistema poll(), supportata su molti sistemi Unix, fornisce migliore scalabilit� per server di rete che devono servire moltissimi client contemporaneamente. poll() ha una scalabilit� migliore perch� la chiamata di sistema richiede solo la lista dei descrittori di file di interesse, mentre select() costruisce una bitmap, abilita i bit per i descrittori di file di interesse, e quindi di conseguenza l'intera bitmap deve essere analizzata linearmente di nuovo. select() � O(file descriptor pi� alto), mentre poll() � O(numero di file descriptor).

register( fd[, eventmask])
Registra un descrittore di file con l'oggetto poll. Chiamate future al metodo poll() controlleranno se il descrittore di file possiede eventi I/O in attesa. fd pu� essere un intero od un oggetto con un metodo fileno() che restituisce un intero. Gli oggetti file implementano fileno(), in modo che possano essere utilizzati anche come argomenti.

eventmask � una bitmask opzionale che descrive il tipo di eventi che si vogliono controllare, e pu� essere una combinazione delle costanti POLLIN, POLLPRI e POLLOUT, descritte nella tabella sottostante. Se non specificato, il valore predefinito usato controller� tutti e tre 3 i tipi di eventi.

Costante  Significato 
POLLIN Non ci sono dati da leggere
POLLPRI Ci sono dati urgenti da leggere
POLLOUT Pronto per l'output: la scrittura non bloccher�
POLLERR Condizione di errore di un qualche tipo
POLLHUP Attesa
POLLNVAL Richiesta non valida: descrittore non aperto

Registrare un descrittore di file che � gi� registrato non significa un errore, ha lo stesso effetto di registrare il descrittore una volta sola.

unregister( fd)
Rimuove un descrittore di file tracciato da un oggetto poll. Esattamente come il metodo register(), fd pu� essere un intero o un oggetto con un metodo fileno() che restituisce un intero.

Tentare di rimuovere un descrittore di file che non � mai stato registrato causer� il sollevamento dell'eccezione KeyError.

poll( [timeout])
Effettua il poll sulla lista dei descrittori di file registrati e restituisce una lista, anche vuota, contenente tuple di 2 elementi ((fd, event) per i descrittori che hanno eventi o errori da riportare. fd � il descrittore di file, mentre event � una bitmask con bit impostati per gli eventi riportati per quel descrittore -- POLLIN per input in attesa, POLLOUT per indicare che sul descrittore vi si pu� scrivere, e cosi via. Una lista vuota indica che la chiamata � andata in timeout e nessun descrittore di file ha alcun evento da riportare. Se viene passato, timeout specifica il periodo di tempo in millisecondi durante il quale sistema aspetter� degli eventi prima di terminare la chiamata. Se timeout � omesso, negativo o None, la chiamata si bloccher� fino a che non apparir� un evento per questo oggetto poll.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.