Основное преимущество использования хэша с целью поиска элементов в таблице, а не использования оригинального ключа пары ключ-значение (который, кстати, обычно хранится и в таблице, поскольку хэш необратим), это ..
... он позволяет отображать все пространство имен [оригинальных] ключей на сравнительно небольшое пространство имен хеш-значений, позволяя хэш-таблице обеспечить производительность O (1) для извлечения элементов.
Эта производительность O (1) становится немного размытой, если учесть дополнительное время для обработки коллизий и тому подобного, но в целом хеш-таблица очень быстрая для хранения и извлечения элементов, в отличие от системной только на значение ключа [original], которое тогда обычно будет O (log N), например, с двоичным деревом (хотя такое дерево более эффективно в пространстве)
Статья Рэндала Шварца Наблюдение за длинными процессами через CGI объясняет другой (и IMHO, лучший) способ наблюдения за длительными процессами.
Промывка STDOUT может помочь. Например, следующая программа Perl должна работать так, как задумано:
#!/usr/bin/perl
use strict;
use warnings;
local $| = 1;
print "Content-type: text/plain\n\n";
for ( my $i = 1 ; $i <= 10 ; $i++ ) {
print "$i\n";
sleep(1);
}
print "Done.";
Согласно CGI :: Push ,
веб-сервер Apache с версии 1.3b2 на не требуется серверных push-скриптов устанавливается как скрипт NPH: -nph параметр do_push () может быть установлен в значение false, чтобы отключить дополнительные заголовки, необходимые для сценария NPH.
Вам просто нужно найти эквивалент do_push в python.
Изменить : взглянуть на CherryPy: потоковая передача тела ответа .
Когда вы установите для записи конфигурации response.stream значение True (и используйте yield) CherryPy управляет диалогом между HTTP-сервером и вашим кодом следующим образом:
(источник: cherrypy.org )