Сравните с itertools.chain
a = [1,2,3,4]
b = [5,6,7,8]
c = [a, b]
itertools.chain(a, b) # 1 2 3 4 5 6 7 8
itertools.chain(c) # [1, 2, 3, 4] [5, 6, 7, 8]
itertools.chain(*c) # 1 2 3 4 5 6 7 8
# or chain specifically has a more-legible version of this
itertools.chain.from_iterable(c) # 1 2 3 4 5 6 7 8
Обратите внимание, что some_function(*[a, b, c])
совпадает с some_function(a, b, c)
. Это называется распаковкой аргументов.
Посмотрите Комету - она похожа на ajax, но она содержит соединение, открытое, таким образом, сервер может продвинуть информацию клиенту.
Обратите внимание, что совместимые браузеры будут только содержать 2 соединения (примечание: большинство современных браузеров больше не соответствует) к конкретному домену (по умолчанию), таким образом, Вы могли бы хотеть разделить свои домены (например, www.yourdomain.com и comet.yourdomain.com) так, чтобы Вы решительно не замедляли загрузку своих страниц. Или Вы могли просто удостовериться, что не открываете соединение кометы, пока все остальное не загружается. Это - просто что-то, чтобы остерегаться.
Можно использовать методы программирования Кометы для этого. В основном страница звонит на сервер, который не возвращается, пока сервер не имеет что-то для отправки (в которой точке клиент сразу выполняет тот же вызов). Таким образом, сервер может продвинуть содержание клиенту в значительной степени каждый раз, когда это хочет.
Поддержка варьируется в зависимости от платформы и является больше проблемой с сервером, чем клиент.
Необходимо изучить Комету:
http://ajaxian.com/archives/comet-a-new-approach-to-ajax-applications
С HTTP соединение должно запуститься от клиента. Но существуют методы, доступные для того, чтобы иметь сервер, содержат открытое соединение и сбрасывают данные по мере необходимости.
Они обычно считаются Кометой или архитектурой Потоковой передачи HTTP.
Вот несколько вопросов в том же духе. И конечно все вопросы отметили комету