Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 [ 99 ] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

Объекты, возвращаемые функцией poll() , имеют следующие методы:

register( fd [, eventmask])

Регистрирует файловый дескриптор (или объект с методом fileno() , возвращающим файловый дескриптор) fd. При последующих вызовах метода poll() файловый дескриптор будет проверяться на предмет наступления событий ввода/вывода. Аргумент eventmask может быть комбинацией (с помощью оператора ) констант POLLIN, POLLPRI и POLLOUT и указывает интересующие типы событий. По умолчанию проверяется наступление событий всех трех типов. Повторная регистрация одного и того же файлового дескриптора не является ошибкой.

unregister( fd)

Снимает с регистрации файловый дескриптор (или объект с методом fileno() , возвращающим файловый дескриптор) fd. При попытке снять с регистрации объект, который не был зарегистрирован, будет сгенерировано исключение KeyError.

poll( [timeout])

Опрашивает зарегистрированные файловые дескрипторы на предмет наступления событий ввода/вывода и возвращает список пар вида ( fd, event) , где fd - файловый дескриптор, для которого наступило событие и возникла ошибка, и event - комбинация констант (см. ниже), описывающих наступившее событие или возникшую ошибку. Аргумент timeout указывает максимальное время ожидания, если он опущен, метод блокирует выполнение до тех пор, пока один из дескрипторов не будет готов. При достижении максимального времени ожидания, возвращает пустой список.

Ниже приведены константы, комбинации которых могут быть использованы в качестве аргумента eventmask метода register() и в результате, возвращаемом методом

poll() :

POLLIN

Имеются данные для чтения.

POLLPRI

Имеются экстренные данные для чтения.

время ожидания, если он опущен, функция блокирует выполнение до тех пор, пока один из дескрипторов не будет готов.

Функция select() возвращает кортеж из трех списков, являющихся подсписками аргументов iwtd, owtd и ewtd и содержащих объекты, готовые к вводу/выводу. При достижении максимального времени ожидания, возвращает кортеж из трех пустых списков.

poll() (большинство вариантов UNIX)

Возвращает объект, поддерживающий регистрацию файловых дескрипторов и реализующий их опрос на предмет наступления событий ввода/вывода.



21.19. mmap - отображение файлов в память 315

POLLOUT

Файловый дескриптор готов к выводу (то есть запись не приведет к блокированию).

POLLERR

Исключительная ситуация.

POLLHUP

Зависание.

POLLNVAL

Неверный запрос: дескриптор не открыт.

21.19 mmap - отображение файлов в память

Модуль mmap доступен в операционных системах UNIX и Windows и позволяет отображать файлы в память. Объекты, представляющие отображенные в память файлы, ведут себя с одной стороны как изменяемые строки, с другой - как файловые объекты. В большинстве случаев вы можете использовать эти объекты вместо строк. Например, с помощью модуля re Вы можете осуществлять поиск в отображенном в память файле. Вы можете вносить изменения в файл как в изменяемую последовательность (например, mapped file [i] = char или mapped file[i: j] = string) различными способами, если эти изменения не требуют изменения размера файла.

Модуль определяет следующий конструктор:

mmap(fd, size [, *platform args])

Отображает в память size байт файла, соответствующего файловому дескриптору fd. Если Вы хотите отобразить файл, соответствующий файловому объекту, - используйте его метод fileno() .

Назначение дополнительных аргументов ( platform args) зависит от используемой платформы. В Windows может быть указано имя создаваемого отображения (повторное использование имени приведет к использованию ранее созданного отображения). В UNIX могут быть указаны два дополнительных аргумента: flags и prot . Аргумент flags может иметь значение MAP SHARED (используется по умолчанию) или MAP PRIVATE и определяет характер отображения. В качестве аргумента prot может использоваться комбинация из констант PROT * (по умолчанию используется PROT READ PROT WRITe), определяющих желаемую степень защиты памяти.

В качестве значений аргументов, характерных для UNIX, Вы можете использовать следующие константы (наиболее важные):

MAP SHARED

Отображение является общим для всех процессов.



MAP PRIVATE

Отображение является частным. При внесении изменений создается копия. Таким образом, все изменения видны только текущему процессу.

PROT READ

Обеспечивает доступ к отображению на чтение.

PROT WRITE

Обеспечивает доступ к отображению на запись.

Объекты, представляющие отображенный в память файл, имеют следующие методы:

close()

Закрывает отображение. Последующие операции над объектом приведут к ошибке.

find( string [, start])

Возвращает наименьший индекс, указывающий, где найдена подстрока string. Аргумент start является индексом, указывающим с какого места необходимо производить поиск (по умолчанию он равен 0).

flush( [offset, size])

Сбрасывает на диск изменения, внесенные в отображение файла. Без вызова этого метода не гарантируется, что внесенные изменения будут записаны до того, как объект отображения будет уничтожен. Если указаны аргументы offset и size, то сбрасываются только изменения в диапазоне (в байтах) от offset до offset + size, в противном случае сбрасывается все содержимое.

move(dest, src, count)

Копирует count байт из диапазона, начинающегося с индекса src, в диапазон, начинающийся с индекса dest.

read byte()

Считывает и возвращает один символ из отображенного файла, то есть возвращает строку с одним символом в текущей позиции отображенного файла и перемещает указатель на 1.

readline()

Считывает и возвращает строку из отображенного файла, начиная с текущей позиции, до символа перехода на новую строку (включая его) или конца отображения.

resize( newsize)

Изменяет размер отображенного в память файла. Размер отображения становится равным newsize байт.

seek( pos [, whence])

Устанавливает текущую позицию в файле. Необязательный аргумент whence указывает на точку отсчета: 0 (по умолчанию) - начало файла, 1 - текущая позиция и 2 - конец файла.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 [ 99 ] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145