Что значит потоки на закачку

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

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

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

Что значит потоки на закачку

2 ответа 2

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

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

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

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

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

Похожие

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

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

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

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

Источник

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

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

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

Ситуация

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

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

Конфиг

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

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

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

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

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

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

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

Логирование

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

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

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

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

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

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

Статус-файл

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

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

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

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

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

Источник

Что значит потоки на закачку

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

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


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 будет 🙂

Источник

Что значит потоки на закачку

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

1. Правда что при нескольких потоках закачка проходит быстрее.
2. Сколько потоков работает быстрее.
3. И есть ли экономия трафика.

Короче раскажите про потоки как можно подробней. Мне кажется эта инфа будет очень интересной.

TERMIN2783@Friday, 10 November 2006, 20:43

QUOTE
1. Правда что при нескольких потоках закачка проходит быстрее.

QUOTE
Что такое многопоточное скачивание?

Многопоточная закачка файлов — один из любимых коньков производителей
программного обеспечения для управления и ускорения загрузки. Зачастую этой
таинственной технологии приписываются возможности многократного ускорения
передачи данных вне зависимости от качества и реальной скорости соединения
пользователя с Интернетом. Звучит, с одной стороны, заманчиво, а с другой —
настораживающе. Резонно, ведь если существует способ раза в три повысить
быстродействие канала связи, то почему его нельзя сделать постоянным?
Стоит обратить внимание на то, как именно подается рекламное заявление об
ускорении загрузки. Никто и никогда не пообещает вам гарантированного приро
ста скорости. Вместо этого в описании программ будут встречаться расплывча
тые цифры с неизменной приставкой «вплоть до». Но если верхний предел воз
можностей от использования многопоточной загрузки известен, то где находится
нижний? Увы, в ряде случаев многопоточная закачка негативно сказывается на
скорости.

Давайте рассмотрим эту технологию в общих деталях. Предположим, на за
грузку десятимегабайтного файла уходит час времени. Соответственно, половина
файла пройдет за полчаса, четверть — за пятнадцать минут и т.п. Если организо
вать четыре одновременных подключения к серверу, то каждое из них может ска
чивать свою четверть, а затем, уже на клиентской машине, исходный файл будет
«склеен» заново. Однако технически такая схема невозможна (по крайней мере,
пока клиент не располагает четырьмя сетевыми картами, каждая из которых под
соединена к независимому каналу связи). Параллельные подключения в реально
сти будут конкурирующими и выстраивающимися в очередь за своим квантом
времени. Чем выше пропускная способность сетевой среды, тем менее очевид
ным становится преимущество многопоточной загрузки.

Источник

Что значит потоки на закачку

Теперь у нас на сайте есть возможность смотреть фильмы онлайн

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

Теперь возможности меню «Избранное» пополнились новым разделом «Интересы», который открывает новые широкие уникальные возможности и непременно порадует любого киномана.

Что значит потоки на закачку

Скорость скачивания зависит от:
• количества сидов и пиров;
• скорости с которой сиды и пиры отдают данные;
• доступности

Приоритет важности параметров при выборе файл для скачивания:
1. Большее количество Сидов.
2. Большее количество Пиров, при большом коэффициенте Доступности; либо меньшее количество Пиров, если коэффициент Доступности близок к единице.
3. Большему значению числа Доступности.

Почему я так медленно качаю?
Обычно медленно закачивается файл из-за малого количества Сидов. Если подключенных Сидов меньше 5, то, обычно, на хорошую скорость рассчитывать не приходиться, за редким исключением, когда какой-то Сид отдает с большой скоростью. Нормальная скорость, обычно, при количестве Сидов более 10.

Почему сидеров много, но скорость маленькая?
Редко, но бывает, что хотя количество Сидеров больше 10, скорость все равно маленькая. Такая ситуация может возникнуть из-за того, что все эти Сидеры отдают с маленькой скоростью или очень много скачивающих пиров, т. е. если Сидеров 10, а Пиров 150, то Сидеры будут отдавать каждому из Пиров с маленькой скоростью, т. е. 1 сид будет отдавать одновременно примерно 15 пирам.
Тут нужно смотреть на коэффициент доступности, так как Пир может качать у другого Пира, если конечно у него есть недостающая часть, что увеличивает общую скорость скачивания.

Почему любой торрент у меня скачивается медленно?
Скорее всего проблема уже не в Сидах и Пирах, а в скорости вашего подключения. Немного о причине можно почитать в этой ветке: Проблема с соединением (прокси/фаервол)

Источник

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

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