Идеальный размер блока для запросов python

Есть ли какая-либо директива по выбору размера блока?

Я попробовал разные размеры блоков, но ни один из них не дал скорость загрузки, сравнимую с скоростью загрузки браузера или wget.

вот снимок моего кода

 r = requests.get(url, headers = headers,stream=True)
 total_length = int(r.headers.get('content-length'))
 if not total_length is None: # no content length header
 for chunk in r.iter_content(1024):
     f.write(chunk)

Любая помощь будет оценена.

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

Спасибо

Ответы

Ответ 1

Вы потеряете время переключения между чтением и записью, а предел размера блока - это AFAIK только предел того, что вы можете сохранить в памяти. Поэтому, пока вы не очень беспокоитесь о том, чтобы сохранить использование памяти, продолжайте и укажите размер большого блока, например, 1 МБ (например, 1024 * 1024) или даже 10 МБ. Размеры блоков в 1024-байтовом диапазоне (или даже меньше, поскольку, похоже, вы протестировали гораздо меньшие размеры) существенно замедлит процесс.

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

Ответ 2

Основываясь на вашем коде, вероятно, проблема в том, что вы не используете буферизованный ввод-вывод. Если это так, то каждый вызов для записи должен быть очень коротким (потому что он буферизирован и забит резьбой), и вы можете принимать довольно большие куски из провода (3-10Mb).

Ответ 3

Вы можете изменить условия размера чанка следующим образом

~/apps/erpnext/htdocs/frappe-bench/sites/assets/js$ vi desk.min.js

Шаг1:

chunk_size = _ref$chunk_size === undefined ? 24576 : _ref$chunk_size, Line 
no:2078

Увеличьте по мере необходимости, как

chunk_size = _ref$chunk_size === undefined ? 2457600 : _ref$chunk_size,

Шаг2: -

var file_not_big_enough = fileobj.size <= 24576; Line no: 8993

Увеличивайте по мере необходимости. Мне нравится

var file_not_big_enough = fileobj.size <= 2457600;