17 / 17 / 0
Регистрация: 26.02.2013
Сообщений: 500

Multiprocessing vs multithreading vs AsyncIO при загрузке файлов

07.05.2020, 20:23. Показов 1521. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос всезнающему All !

Нужно загрузить/выгрузить много разноразмерных файлов через протокол http. Какой вариант посоветуете выбрать - процессы, потоки или этот "новый" async ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2020, 20:23
Ответы с готовыми решениями:

Тестирование multithreading/multiprocessing программы
Доброго всем времени суток! Есть задача - перемножение матриц на Си под линукс, 2 реализации - multiprocessing и multithreading. Сами...

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

asyncio.wait vs asyncio.gather
Всем привет! :victory: Вопросы внизу. Есть два похожих теста: #1 - asyncio.wait import asyncio import random async def...

7
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
07.05.2020, 20:40
BVladimir2, а ты во всем этом сечешь?)
я бы начал с потоков, ибо для запросов хттп самое то, мультипроцессинг уже перебор. По асинку не знаю, думаю тоже будет быстро, но там же и с ххтп надо через специального клиента работать. Так что я бы сам лично на потоках быстро сделал
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
07.05.2020, 20:52
async сложно, но дешево.
потоки просто, но дорого.
процессы... ну это еще дороже чем потоки плюс межпроцессное взаимодействие и работа с локами не для новичков, плюс тебя еще и сайт заблочит за перебор лимитов в секунды на запросы. Это на свой сайт ты можешь стрелять запросами хоть по 100 в секунду - главное чтобы сервер выдержал. А чужой сервак тебя сразу же "пошутил не так — и ты попал в blacklist".
1
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
07.05.2020, 21:12
BVladimir2, https://github.com/spyoungtech/grequests
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
08.05.2020, 09:09
BVladimir2,

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# -*- coding: utf-8 -*-
 
 
import requests
import typing
import asyncio
 
async def download(url: str, file_name: typing.Optional[str] = None) -> str:
    if file_name is None:
        file_name = url.split("/")[-1]
 
    print(f"Connect: url = {url}")
    with requests.get(url, stream=True) as responce:
        responce.raise_for_status()
 
        print(f"Start download: file_name = {file_name}"
              f"size = {(len(responce.content) // 1024):.2f} Kbyte")
 
        with open(file_name, "wb") as file:
            for chunk in responce.iter_content(chunk_size=2*10):
                file.write(chunk)
 
    print(f"Download success: file_name = {file_name}")
    return file_name
 
 
 
 
loop = asyncio.get_event_loop()
tasks = [
    loop.create_task(download("https://www.python.org/static/img/python-logo@2x.png"))
]
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
08.05.2020, 09:42
DmFat, старшие товарищи поправят, но вроде так не стоит делать. Либа реквестс не асинхронная, нельзя на ней делать, будет ждать выполнения запроса. Вроде на асинкио есть специальные либы типа асинкхттп
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
08.05.2020, 11:23
Welemir1, век живи, век учись! Не думал(даже не задумывался) об этом.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
08.05.2020, 14:12
Цитата Сообщение от Welemir1 Посмотреть сообщение
Либа реквестс не асинхронная
Все верно. Поэтому вместо нее нужно использовать предложенную выше grequests (не пользовался - она реализует асинхронность через либу gevent, а та в свою очередь через гринлеты), либо более современную aiohttp.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2020, 14:12
Помогаю со студенческими работами здесь

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

Кодировка при загрузке файлов
Здравствуйте! Есть код для заргузки файлов в папку if($_FILES !== 4){ $uploaddir = './images/photo/'; $uploadfile =...

Ошибка при загрузке dt файлов
Добрый, ошибка при загрузке dt файлов что может быть?

Ошибка при загрузке файлов
Вот такая ошибка у меня оказывается при загрузке файла на сервер. Предоаставляю этот код в котором ошибка: <? $site =...

Переименование файлов при загрузке
Необходимо переименовывать загруженный файл, если выбрана переменная newfilename $id = $_GET; $id = trim($id); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru