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.