Я нашел только puf (Parallel URL fetcher), но не смог заставить его читать URL из файла; что-то вроде
puf < urls.txt
тоже не работает.
На сервере установлена операционная система Ubuntu.
Я нашел только puf (Parallel URL fetcher), но не смог заставить его читать URL из файла; что-то вроде
puf < urls.txt
тоже не работает.
На сервере установлена операционная система Ubuntu.
Ответы:
Используя GNU Parallel ,
$ parallel -j $ {jobs} wget <urls.txt
или xargsиз GNU Findutils ,
$ xargs -n 1 -P $ {jobs} wget <urls.txt
где ${jobs}находится максимальное количество wgetвы хотите , чтобы запустить одновременно (установка -nдля 1получить один wgetвызов в каждой строке в urls.txt). Без -j/ -P, parallelбудет одновременно запускать столько же заданий, сколько и ядра ЦП (что не обязательно имеет смысл для wgetсетевого ввода-вывода), и xargsбудет запускаться по одному за раз.
Одной из приятных особенностей, которая parallelимеет преимущество xargs, xargsявляется разделение выходных данных одновременно выполняемых заданий, но если вам это не важно, скорее всего, они предустановлены.
jobsзависит от многих факторов: задержка пути, пропускная способность пути, политики удаленного сервера и т. Д.
aria2 делает это.
http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafileconcurrently
Пример: aria2c http://example.org/mylinux.iso
Вы можете реализовать это, используя Python и библиотеку pycurl. Библиотека pycurl имеет «многопользовательский» интерфейс, который реализует свой собственный цикл «четность», который обеспечивает несколько одновременных подключений.
Однако интерфейс довольно C-подобен и, следовательно, немного громоздок по сравнению с другим, более "Pythonic", кодом.
Я написал для него оболочку, которая создает поверх него более полный браузероподобный клиент. Вы можете использовать это в качестве примера. См. Модуль pycopia.WWW.client . HTTPConnectionManager оборачивает мультиинтерфейс.
Часть справочной страницы GNU Parallel содержит пример параллельного рекурсивного wget.
https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Breadth-first-parallel-web-crawler-mirrorer
HTML загружается дважды: один раз для извлечения ссылок и один раз для загрузки на диск. Другой контент загружается только один раз.
Если вам не нужна рекурсивность, ответ эфиментности кажется очевидным.
Жертвам вашей параллельной загрузки не придется удивляться: они ожидают, что одно соединение будет обслуживать каждого клиента, а установка нескольких соединений означает меньше клиентов в целом. (То есть это считается грубым поведением).