Что такое потоки при скачивании

Что такое потоки при скачивании

смотря что подразумевается под «лучше»

так как ширина дырочки в инет одинаковая для всех случаев, то монопенисуально сколько потоков. Кроме того думается что полезный траффик(данные) в случае с несколькими программными потоками будет меньше, так как для этих самых левых потоков будет больший оверхед чем для одного потока.


P.L.U.R. and WBR, NailMan aka 2:5020/3337.13

Что такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачиванииЧто такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачивании
Prohodil Mimo © ( 2005-01-21 13:24 ) [3]

но в несколько потоков обычно быстрее скачивается

Что такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачиванииЧто такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачивании
Kerk © ( 2005-01-21 13:25 ) [4]

На серваке может быть установлен лимит скорости на соединение. Т.е. при одинаковой ширине дырочки несколько потоков скачают файл быстрее.


> 1008 © (21.01.05 13:04)

Если сервер может отдать больше чем ты принять то в один поток. Если сервер каждой закачке скажем отдает максимум 1Kb, а у тебя канал потолще то вероятно быстрее скачается в несколько потоков.

да, также у тебя локально может быть обрезана скорость для одной закачки, тогда тоже лучше в несколько 🙂

Что такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачиванииЧто такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачивании
КаПиБаРа © ( 2005-01-21 13:35 ) [7]

1008 © (21.01.05 13:04)
Как его качать лучше

Конечно же в один поток. Тут двух мнений быть не может.

Что такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачиванииЧто такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачивании
Kerk © ( 2005-01-21 13:37 ) [8]

КаПиБаРа © (21.01.05 13:35) [7]
Тут двух мнений быть не может.

Ты видимо веткой про религию обчитался. 🙂

Что такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачиванииЧто такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачивании
КаПиБаРа © ( 2005-01-21 13:45 ) [9]

Kerk © (21.01.05 13:37) [8]
Мнения могут быть, но качать нужно в одном потоке.

Digitman © (21.01.05 13:18) [1]

NailMan © (21.01.05 13:22) [2]

Пожалуй это довольно полиписуально, т.к. DuMeter (кажется так назывался этот мониторчик) мою загрузку (при одном файле) показывал в виде пиков: снижение скорости (почти до нуля) и её возрастание до максимума (причём только я в нете). То есть можно более одного.

Что такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачиванииЧто такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачивании
Piter © ( 2005-01-21 14:31 ) [11]

NailMan © (21.01.05 13:22) [2]
так как ширина дырочки в инет одинаковая для всех случаев, то монопенисуально сколько потоков

неверно.
Это так только потому, что в большинстве случае скорость сервера БОЛЬШЕ, чем скорость клиента.
А если наоборот, то не все так просто. Допустим, сервер делит скорость поровну между пользователями.

Реально все конечно сложнее, но думаю идею я донес.

Другое дело, что зачастую серверы, которые предоставлят что-то тяжелое (фильмы, бесплатную музыку) ограничивают закачку N потоками (зачастую N=1). И если начинаешь качать в большее число потоков, то просто банят, тут вообще у тебя скорость 0 будет 🙂

Источник

Что такое потоковая передача мультимедиа?

Потоковая передача — это непрерывная передача аудио или видеофайлов с сервера клиенту. Проще говоря, потоковая передача — это то, что происходит, когда потребители смотрят телевизор или слушают подкасты на подключенных к интернету устройствах. При потоковой передаче медиафайл, воспроизводимый на клиентском устройстве, хранится удаленно и передается через интернет в течение нескольких секунд.

В чем разница между потоковой передачей и загрузкой?

Потоковая передача в режиме реального времени, это более эффективно, чем загрузка мультимедийных файлов. Если видеофайл загружен, копия всего файла сохраняется на жестком диске устройства, и видео не может воспроизводиться до завершения загрузки всего файла. Если видео передается в потоковом режиме, браузер воспроизводит его без копирования и сохранения. Видео загружается немного за один раз вместо загрузки всего файла целиком, и информация, загружаемая браузером, не сохраняется локально.

Можно подумать об этом, как о разнице между озером и рекой: оба содержат воду, и река может содержать столько же воды, сколько озеро. Разница в том, что в реке вода не находится в одном и том же месте в одно и то же время. Загруженный видеофайл больше похож на озеро, поскольку он занимает много места на жестком диске (и для перемещения озера требуется много времени). Потоковое видео больше похоже на реку, в том, что данные видео непрерывно, быстро течет в браузер пользователя.

Как работает потоковая передача мультимедиа?

Как и другие данные, передаваемые через интернет, аудио и видеоданные разбиваются на пакеты данных. Каждый пакет содержит небольшой фрагмент файла, и аудио или видеоплеер в браузере на клиентском устройстве принимает поток пакетов данных и интерпретирует их как видео или аудио.

Отправка видео через интернет, в отличие от отправки текста и неподвижных изображений, требует более быстрого метода передачи данных, чем TCP/IP, который отдает приоритет надежности над скоростью.

Как протокол UDP улучшает потоковую передачу?

UDP — это транспортный протокол, который используется для перемещения пакетов данных по сетям. UDP используется с интернет-протоколом (IP), и вместе они называются UDP/IP. В отличие от TCP, UDP не отправляет сообщения назад и вперед, чтобы открыть соединение перед передачей данных, и он не гарантирует, что все пакеты данных прибывают и находятся в порядке. В результате передача данных не занимает столько времени, сколько через TCP, и, хотя некоторые пакеты теряются по пути, существует так много пакетов данных, участвующих в поддержании потока, что пользователь не должен замечать потерянные.

Большая часть интернета использует TCP или протокол управления передачей. Этот транспортный протокол предусматривает тщательное взаимное подтверждение для открытия соединения. Как только соединение открыто, и два коммутирующих устройства передают пакеты назад и вперед, TCP гарантирует, что передача надежна, что все пакеты поступают в порядке.

Для потоковой передачи скорость намного важнее надежности. Например, если кто-то смотрит эпизод телешоу онлайн, не каждый пиксель должен присутствовать на каждом кадре эпизода. Пользователь предпочел бы иметь смотреть эпизод на нормальной скорости, чем сидеть и ждать каждый бит данных, которые будут доставлены. Поэтому, несколько потерянных пакетов данных не является огромной проблемой, и именно поэтому потоковая передача использует UDP.

Если TCP похож на службу доставки пакетов, которая требует, чтобы получатель подписал его, то UDP похож на службу доставки, которая оставляет пакеты на переднем крыльце, не стуча в дверь, чтобы получить подпись. Служба доставки TCP теряет меньше пакетов, но служба доставки UDP работает быстрее, так как пакеты могут быть выгружены, даже если их никто не подписывает.

Потоковая передача и буферизация

Потоковые медиаплееры загружаются на несколько секунд раньше времени, чтобы видео или аудио могли продолжить воспроизведение, если соединение ненадолго прервано. Это называется буферизацией. Буферизация обеспечивает плавное и непрерывное воспроизведение видео. Однако при медленных соединениях или большой задержке в сети буферизация видео может занять много времени.

Какие факторы замедляют стриминг?

На стороне пользователя:

Как сделать потоковую передачу быстрее?

Потоковая передача подвержена тем же задержкам и снижению производительности, что и другие виды веб-контента. Поскольку потоковое содержимое хранится в другом месте, расположение хостинга имеет большое значение, как и в случае с любым типом содержимого, доступного через интернет. Если пользователь в Нью-Йорке пытается выполнить потоковую передачу с сервера Netflix в Лос Гатос, видеоконтент должен будет пересечь 3000 миль, чтобы достичь пользователя, и видео придется потратить много времени на буферизацию или может даже не воспроизводиться вообще. По этой причине Netflix и другие поставщики потоковой передачи широко используют распределенные сети доставки контента (CDN), хранящие контент в местах по всему миру, которые намного ближе к пользователям.

CDN оказывают огромное положительное влияние на производительность потоковой передачи. Cloudflare Stream Delivery использует сеть CDN Cloudflare для хранения видеоконтента во всех точках присутствия Cloudflare по всему миру. В результате сокращается задержка для времени запуска видео и уменьшается буферизация.

Источник

Многопоточное скачивание файлов с ftp python-скриптом

Зачем это нужно?

Однажды передо мной встала задача копирования большого количества файлов с ftp-сервера. Нужно было делать бэкап. Казалось бы, что может быть проще! Но увы, ничего готового работающего так же быстро для моих условий найти не удалось.

Ситуация

Нужно было забирать периодически пару сотен файлов с ftp-сервера под Windows. Много мелочи и несколько очень крупных по размеру файлов. Суммарно примерно на 500 Гб. Сервер представляет собой vps, расположенный довольно далеко за рубежом. Днем машина высоко нагружена, рано ночью выполняются регламентные работы, итого на скачивание часов 5 максимум.

Ни одна из рассмотренных мной утилит не смогла справиться качественно и за отведенное время. Ну что ж, деваться некуда, нормальную систему резервного копирования ещё не купили, а значит ноги в руки вооружаемся редактором или IDE Python и вперёд! За приключениями!

Конфиг

Все параметры для скрипта вынесем в отдельный файл для удобства.

В начале был список

Скачать файлы с ftp сама по себе задача не сложная, но путём недолгих экспериментов было выяснено, что скачивание файлов занимает время, а таймаут ftp-соединения приходит к нам гораздо быстрее. Следовательно, качать нужно каждый файл в новом соединении, иначе велик риск чего-то потом не досчитаться в скачанных файлах.

Для этого нам нужен список этих самых файлов. Ни о каком статичном списке файлов, конечно, речи не идет, значит нам его при каждом выполнении скрипта получать с сервера по-новой.

Параметры берутся из конфига. Конечно же в нужно не забыть импортировать библиотеку ftplib, чтобы этот кусок заработал.

Список файлов с сервера мы получим с помощью следующего класса:

Помимо методов соединения с сервером, получения списка файлов и определения его длины здесь имеет метод, который возвращает нам следующий файл для скачивания, из списка он при этом, конечно, удаляется.

Логирование

Для ведения логов скачивания будет использовать стандартную библиотеку logging. Создадим класс, который будет заниматься логированием.

Скрипт будет поддерживать просто логирование в файл и ротацию файловых логов, ибо логи имеют свойство расти непомерно и это надо бы держать под контролем.

Скачивание файла

Каждый файл будет скачиваться в отдельном потоке. Класс, скачивающий один конкретный файл с сервера выглядит следующим образом:

Для подсчета количества одновременно скачиваемых файлов мы будет использовать свойство класса count. В нём у нас будет количество существующих экземпляров класса: в конструкторе счетчик наращивается, в деструкторе, соответственно, уменьшается.

При сохранении списка файлов скрипт сохраняет также путь до этого файла, этот путь мы воссоздаем при скачивании с помощью os.makedirs.

Статус-файл

Класс для работы с этим файлов выглядит так:

Многопоточность

Ну и, наконец, сама основная функция скрипта, которая осуществляет работу с потоками скачивания:

Здесь мы запускаем логирование, получаем список файлов ( он хранится в памяти).

В вечном цикле while мы проверяем количество одновременно запущенных скачиваний и, при необходимости, запускаем дополнительные потоки.

Источник

Если ли смысл скачивать файлы в нескольких потоках?

Планирую сделать скачивание файлов.

Например, нужно скачать 9 файлов. Стоит ли их скачивать в 3 потоках или в одном?

Что такое потоки при скачивании. Смотреть фото Что такое потоки при скачивании. Смотреть картинку Что такое потоки при скачивании. Картинка про Что такое потоки при скачивании. Фото Что такое потоки при скачивании

2 ответа 2

Однако если вы планируете сохранять скачанные файлы на диске, то надо понимать, что диск практически не параллелится. Какое-то ускорение вы получите, но нужно экспериментировать.

Если память позволяет, я бы максимально параллелизовал скачивание файлов в память, а затем установил небольшую степень параллелизации для сохранения на диск.

Скорее всего нет. Если Ваш канал «уже» скорости, которую может отдать сайт, то хоть в 100 потоков качай, скорость не прибавить. Но некоторые сервера ограничивают скорость скачки для одного файла и при этом ограничивают ее сильно. В этом случае скачивать нескольких файлов одновременно может принести пользу (до тех пор, пока канала хватает). Если файлы качаются с разных серверов и Ваш канал явно шире возможности серверов, тогда есть смысл качать в несколько потоков (но по потоку на файл). Но при этом, главное не уперется в скорость диска.

Эта вся шумиха с закачкой файлов пошла с тех времен, когда интернет был медленный и тяжелый. Когда tcp/ip стек работал плохо. Был спутниковый интернет (да и мобильный который назывался CDS), который в один поток не мог пустить больше определенной скорости (от 2400 до 9600). Но таких потоков могло быть много. И вот в этом случае скачка в много потоков давала реальное ускорение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками многопоточность загрузка или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.12.3.40886

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

Потоки и работа с ними

Многопоточность позволяет увеличивать скорость реагирования приложения и, если приложение работает в многопроцессорной или многоядерной системе, его пропускную способность.

Процессы и потоки

Процесс — это исполнение программы. Операционная система использует процессы для разделения исполняемых приложений. Поток — это основная единица, которой операционная система выделяет время процессора. Каждый поток имеет приоритет планирования и набор структур, в которых система сохраняет контекст потока, когда выполнение потока приостановлено. Контекст потока содержит все сведения, позволяющие потоку безболезненно возобновить выполнение, в том числе набор регистров процессора и стек потока. Несколько потоков могут выполняться в контексте процесса. Все потоки процесса используют общий диапазон виртуальных адресов. Поток может исполнять любую часть программного кода, включая части, выполняемые в данный момент другим потоком.

Цели применения нескольких потоков

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

Представьте себе классическое приложение, в котором основной поток отвечает за элементы пользовательского интерфейса и реагирует на действия пользователя. Используйте рабочие потоки для выполнения длительных операций, которые, в противном случае будут занимать основной поток, в результате чего пользовательский интерфейс будет недоступен. Для более оперативной реакции на входящие сообщения или события также можно использовать выделенный поток связи с сетью или устройством.

Если программа выполняет операции, которые могут выполняться параллельно, можно уменьшить общее время выполнения путем выполнения этих операций в отдельных потоках и запуска программы в многопроцессорной или многоядерной системе. В такой системе использование многопоточности может увеличить пропускную способность, а также повысить скорость реагирования.

Наконец, можно использовать класс System.Threading.Thread, который представляет управляемый поток. Дополнительные сведения см. в разделе Использование потоков и работа с потоками.

Исключения следует обрабатывать в потоках. Необработанные исключения в потоках, как правило, приводят к завершению процесса. Дополнительные сведения см. в статье Исключения в управляемых потоках.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *