Руководство по работе с http в python. библиотека requests

Содержимое ответа

Мы можем читать содержимое ответа сервера. Рассмотрим тайм-лайн GitHub снова:

>>> import requests
>>> r = requests.get('https://api.github.com/events') 
>>> r.text 
u'[{"repository":{"open_issues":0,"url":"https://github.com/...

будет автоматически декодировать содержимое ответа сервера. Большинство Unicode кодировок без проблем декодируются.

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

>>> r.encoding
'utf-8' 
>>> r.encoding = 'ISO-8859-1' 

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

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

Использование Translate API

Теперь перейдем к чему-то более интересному. Мы используем API Яндекс.Перевод (Yandex Translate API) для выполнения запроса на перевод текста на другой язык.

Чтобы использовать API, нужно предварительно войти в систему. После входа в систему перейдите к Translate API и создайте ключ API. Когда у вас будет ключ API, добавьте его в свой файл в качестве константы. Далее приведена ссылка, с помощью которой вы можете сделать все перечисленное: https://tech.yandex.com/translate/

script.py

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

Чтобы узнать, какой URL нам нужно отправить для использования API, посмотрим документацию Яндекса.

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

Если вы видите URL с символами амперсанда (&), знаками вопроса (?) или знаками равенства (=), вы можете быть уверены, что это URL запроса GET. Эти символы задают сопутствующие параметры для URL.

Обычно все, что размещено в квадратных скобках ([]), будет необязательным. В данном случае для запроса необязательны формат, опции и обратная связь, но обязательны параметры key, text и lang.

Добавим код для отправки на этот URL. Замените первый созданный нами запрос на следующий:

script.py

Существует два способа добавления параметров. Мы можем прямо добавить параметры в конец URL, или библиотека Requests может сделать это за нас. Для последнего нам потребуется создать словарь параметров. Нам нужно указать три элемента: ключ, текст и язык. Создадим словарь, используя ключ API, текст и язык , т. к. нам требуется перевод с английского на испанский.

Другие коды языков можно посмотреть здесь. Нам нужен столбец 639-1.

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

script.py

Теперь возьмем словарь параметров и передадим его функции .

script.py

Когда мы передаем параметры таким образом, Requests автоматически добавляет параметры в URL за нас.

Теперь добавим команду печати текста ответа и посмотрим, что мы получим в результате.

script.py

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

Повторите эту процедуру с кодом языка en-fr, и вы получите ответ .

script.py

Посмотрим заголовки полученного ответа.

script.py

Разумеется, заголовки должны быть другими, поскольку мы взаимодействуем с другим сервером, но в данном случае мы видим тип контента application/json вместо text/html. Это означает, что эти данные могут быть интерпретированы в формате JSON.

Если ответ имеет тип контента application/json, библиотека Requests может конвертировать его в словарь и список, чтобы нам было удобнее просматривать данные.

Для обработки данных в формате JSON мы используем метод на объекте response.

Если вы распечатаете его, вы увидите те же данные, но в немного другом формате.

script.py

Причина отличия заключается в том, что это уже не обычный текст, который мы получаем из файла res.text. В данном случае это печатная версия словаря.

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

script.py

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

script.py

Теперь мы видим только переведенное слово.

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

script.py

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

Parameter Values

Parameter Description
url Try it Required. The url of the request
params Try it Optional. A dictionary, list of tuples or bytes to send as a query string.Default
allow_redirects Try it Optional. A Boolean to enable/disable redirection.Default
(allowing redirects)
auth Try it Optional. A tuple to enable a certain HTTP authentication.Default

cert Try it Optional. A String or Tuple specifying a cert file or key.Default

cookies Try it Optional. A dictionary of cookies to send to the specified url.Default

headers Try it Optional. A dictionary of HTTP headers to send to the specified url.Default
proxies Try it Optional. A dictionary of the protocol to the proxy url.Default

stream Try it Optional. A Boolean indication if the response should be immediately downloaded (False) or streamed (True).Default

timeout Try it Optional. A number, or a tuple, indicating how many seconds to wait for the client to make a connection and/or send a response.Default which means the request will continue
until the connection is closed
verify Try it
Try it
Optional. A Boolean or a String indication to verify the servers TLS certificate or not.Default

Parameter Values

Parameter Description
url Try it Required. The url of the request
data Try it Optional. A dictionary, list of tuples, bytes or a file object to send to the specified url
json Try it Optional. A JSON object to send to the specified url
files Try it Optional. A dictionary of files to send to the specified url
allow_redirects Try it Optional. A Boolean to enable/disable redirection.Default
(allowing redirects)
auth Try it Optional. A tuple to enable a certain HTTP authentication.Default

cert Try it Optional. A String or Tuple specifying a cert file or key.Default

cookies Try it Optional. A dictionary of cookies to send to the specified url.Default

headers Try it Optional. A dictionary of HTTP headers to send to the specified url.Default
proxies Try it Optional. A dictionary of the protocol to the proxy url.Default

stream Try it Optional. A Boolean indication if the response should be immediately downloaded (False) or streamed (True).Default

timeout Try it Optional. A number, or a tuple, indicating how many seconds to wait for the client to make a connection and/or send a response.Default which means the request will continue
until the connection is closed
verify Try it
Try it
Optional. A Boolean or a String indication to verify the servers TLS certificate or not.Default

Производительность

Ниже приведен фрагмент HTTP-клиента, отправляющего запросы на httpbin.org, HTTP-API, который обеспечивает (среди прочего) конечную точку, имитирующую длинный запрос. Этот пример реализует все методы, перечисленные выше.

Программа для сравнения производительности использования различных запросов

import contextlib
import time

import aiohttp
import asyncio
import requests
from requests_futures import sessions

URL = "http://httpbin.org/delay/1"
TRIES = 10


@contextlib.contextmanager
def report_time(test):
    t0 = time.time()
    yield
    print("Time needed for `%s' called: %.2fs"
          % (test, time.time() - t0))


with report_time("serialized"):
    for i in range(TRIES):
        requests.get(URL)


session = requests.Session()
with report_time("Session"):
    for i in range(TRIES):
        session.get(URL)


session = sessions.FuturesSession(max_workers=2)
with report_time("FuturesSession w/ 2 workers"):
    futures = 
    for f in futures:
        f.result()


session = sessions.FuturesSession(max_workers=TRIES)
with report_time("FuturesSession w/ max workers"):
    futures = 
    for f in futures:
        f.result()


async def get(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            await response.read()

loop = asyncio.get_event_loop()
with report_time("aiohttp"):
    loop.run_until_complete(
        asyncio.gather(*))

Запуск этой программы дает следующий вывод:

Time needed for `serialized' called: 12.12s
Time needed for `Session' called: 11.22s
Time needed for `FuturesSession w/ 2 workers' called: 5.65s
Time needed for `FuturesSession w/ max workers' called: 1.25s
Time needed for `aiohttp' called: 1.19s

Не удивительно, что более медленный результат приходит с сериализованной версией, поскольку все запросы выполняются один за другим без повторного использования соединения — 12 секунд на 10 запросов.

Использование объекта Session и, следовательно, повторное использование соединения означает экономию 8% времени, что уже является большим и легким выигрышем. Как минимум, вы всегда должны использовать Session.

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

Если вы не используете старые версии Python, то, без сомнения, использование aiohttp должно быть вашим выбором, если вы хотите написать быстрый и асинхронный HTTP-клиент. Это самое быстрое и масштабируемое решение, поскольку оно может обрабатывать сотни параллельных запросов.

Python NumPy

NumPy IntroNumPy Getting StartedNumPy Creating ArraysNumPy Array IndexingNumPy Array SlicingNumPy Data TypesNumPy Copy vs ViewNumPy Array ShapeNumPy Array ReshapeNumPy Array IteratingNumPy Array JoinNumPy Array SplitNumPy Array SearchNumPy Array SortNumPy Array FilterNumPy Random
Random Intro
Data Distribution
Random Permutation
Seaborn Module
Normal Distribution
Binomial Distribution
Poisson Distribution
Uniform Distribution
Logistic Distribution
Multinomial Distribution
Exponential Distribution
Chi Square Distribution
Rayleigh Distribution
Pareto Distribution
Zipf Distribution

NumPy ufunc
ufunc Intro
ufunc Create Function
ufunc Simple Arithmetic
ufunc Rounding Decimals
ufunc Logs
ufunc Summations
ufunc Products
ufunc Differences
ufunc Finding LCM
ufunc Finding GCD
ufunc Trigonometric
ufunc Hyperbolic
ufunc Set Operations

Parameter Values

Parameter Description
url Try it Required. The url of the request
allow_redirects Try itTry it Optional. A Boolean to enable/disable redirection.Default
(not allowing redirects)
auth Try it Optional. A tuple to enable a certain HTTP authentication.Default

cert Try it Optional. A String or Tuple specifying a cert file or key.Default

cookies Try it Optional. A dictionary of cookies to send to the specified url.Default

headers Try it Optional. A dictionary of HTTP headers to send to the specified url.Default
proxies Try it Optional. A dictionary of the protocol to the proxy url.Default

stream Try it Optional. A Boolean indication if the response should be immediately downloaded (False) or streamed (True).Default

timeout Try it Optional. A number, or a tuple, indicating how many seconds to wait for the client to make a connection and/or send a response.Default which means the request will continue
until the connection is closed
verify Try it Optional. A Boolean or a String indication to verify the servers TLS certificate or not.Default

Python Tutorial

Python HOMEPython IntroPython Get StartedPython SyntaxPython CommentsPython Variables
Python Variables
Variable Names
Assign Multiple Values
Output Variables
Global Variables
Variable Exercises

Python Data TypesPython NumbersPython CastingPython Strings
Python Strings
Slicing Strings
Modify Strings
Concatenate Strings
Format Strings
Escape Characters
String Methods
String Exercises

Python BooleansPython OperatorsPython Lists
Python Lists
Access List Items
Change List Items
Add List Items
Remove List Items
Loop Lists
List Comprehension
Sort Lists
Copy Lists
Join Lists
List Methods
List Exercises

Python Tuples
Python Tuples
Access Tuples
Update Tuples
Unpack Tuples
Loop Tuples
Join Tuples
Tuple Methods
Tuple Exercises

Python Sets
Python Sets
Access Set Items
Add Set Items
Remove Set Items
Loop Sets
Join Sets
Set Methods
Set Exercises

Python Dictionaries
Python Dictionaries
Access Items
Change Items
Add Items
Remove Items
Loop Dictionaries
Copy Dictionaries
Nested Dictionaries
Dictionary Methods
Dictionary Exercise

Python If…ElsePython While LoopsPython For LoopsPython FunctionsPython LambdaPython ArraysPython Classes/ObjectsPython InheritancePython IteratorsPython ScopePython ModulesPython DatesPython MathPython JSONPython RegExPython PIPPython Try…ExceptPython User InputPython String Formatting

Python Tutorial

Python HOMEPython IntroPython Get StartedPython SyntaxPython CommentsPython Variables
Python Variables
Variable Names
Assign Multiple Values
Output Variables
Global Variables
Variable Exercises

Python Data TypesPython NumbersPython CastingPython Strings
Python Strings
Slicing Strings
Modify Strings
Concatenate Strings
Format Strings
Escape Characters
String Methods
String Exercises

Python BooleansPython OperatorsPython Lists
Python Lists
Access List Items
Change List Items
Add List Items
Remove List Items
Loop Lists
List Comprehension
Sort Lists
Copy Lists
Join Lists
List Methods
List Exercises

Python Tuples
Python Tuples
Access Tuples
Update Tuples
Unpack Tuples
Loop Tuples
Join Tuples
Tuple Methods
Tuple Exercises

Python Sets
Python Sets
Access Set Items
Add Set Items
Remove Set Items
Loop Sets
Join Sets
Set Methods
Set Exercises

Python Dictionaries
Python Dictionaries
Access Items
Change Items
Add Items
Remove Items
Loop Dictionaries
Copy Dictionaries
Nested Dictionaries
Dictionary Methods
Dictionary Exercise

Python If…ElsePython While LoopsPython For LoopsPython FunctionsPython LambdaPython ArraysPython Classes/ObjectsPython InheritancePython IteratorsPython ScopePython ModulesPython DatesPython MathPython JSONPython RegExPython PIPPython Try…ExceptPython User InputPython String Formatting

Необработанное содержимое ответа

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

>>> r = requests.get('https://api.github.com/events', stream=True) 
>>> r.raw 
<requests.packages.urllib3.response.HTTPResponse object at 0x101194810> 
>>> r.raw.read(10) 
'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'

Теперь вы можете использовать подобный код как шаблон, чтобы сохранить получаемый поток в файл:

>>> with open(filename, 'wb') as fd:
>>>     for chunk in r.iter_content(chunk_size):
>>>         fd.write(chunk)

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

Properties and Methods

Property/Method Description
apparent_encoding Try it Returns the apparent encoding
close() Try it Closes the connection to the server
content Try it Returns the content of the response, in bytes
cookies Try it Returns a CookieJar object with the cookies sent back from the server
elapsed Try it Returns a timedelta object with the time elapsed from sending the request to the arrival of the response
encoding Try it Returns the encoding used to decode r.text
headers Try it Returns a dictionary of response headers
history Try it Returns a list of response objects holding the history of request (url)
is_permanent_redirect Try it Returns True if the response is the permanent redirected url, otherwise False
is_redirect Try it Returns True if the response was redirected, otherwise False
iter_content() Try it Iterates over the response
iter_lines() Try it Iterates over the lines of the response
json() Try it Returns a JSON object of the result (if the result was written in JSON format, if not it raises an error)
links Try it Returns the header links
next Try it Returns a PreparedRequest object for the next request in a redirection
ok Try it Returns True if status_code is less than 400, otherwise False
raise_for_status() Try it If an error occur, this method returns a HTTPError object
reason Try it Returns a text corresponding to the status code
request Try it Returns the request object that requested this response
status_code Try it Returns a number that indicates the status (200 is OK, 404 is Not Found)
text Try it Returns the content of the response, in unicode
url Try it Returns the URL of the response

HTTPRedirectHandler Objects¶

Note

Some HTTP redirections require action from this module’s client code. If this
is the case, is raised. See RFC 2616 for
details of the precise meanings of the various redirection codes.

An exception raised as a security consideration if the
HTTPRedirectHandler is presented with a redirected URL which is not an HTTP,
HTTPS or FTP URL.

(req, fp, code, msg, hdrs, newurl)

Return a or in response to a redirect. This is called
by the default implementations of the methods when a
redirection is received from the server. If a redirection should take place,
return a new to allow to perform the
redirect to newurl. Otherwise, raise if
no other handler should try to handle this URL, or return if you
can’t but another handler might.

Note

The default implementation of this method does not strictly follow RFC 2616,
which says that 301 and 302 responses to requests must not be
automatically redirected without confirmation by the user. In reality, browsers
do allow automatic redirection of these responses, changing the POST to a
, and the default implementation reproduces this behavior.

(req, fp, code, msg, hdrs)

Redirect to the or URL. This method is called by the
parent when getting an HTTP ‘moved permanently’ response.

(req, fp, code, msg, hdrs)

The same as , but called for the ‘found’ response.

(req, fp, code, msg, hdrs)

The same as , but called for the ‘see other’ response.

Лучшие недорогие зеркальные фотоаппараты для начинающих 2020

5. Canon EOS 2000D Kit

Canon EOS 2000D Kit один из лучших вариантов в рейтинге фотоаппаратов для начинающих, который великолепно подойдет для отработки навыков или начала обучения на курсе. Купив такую камеру, можно быть уверенным в качестве снимков и простоте управления. Canon поставляется с простым объективом в комплекте, поэтому работу с ним можно начинать сразу после покупки.

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

Некоторые покупатели отмечают, что у фотоаппарата EOS 2000D Kit отсутствует сенсорный экран, но не нужно забывать, что это бюджетная модель. Емкости аккумулятора хватает на 500 снимков без подзарядки. Благодаря оптическому видоискателю батарея расходуется медленнее, ведь подстроить кадр можно даже при выключенном аппарате.

4. Nikon D3400 Kit

Ищете недорогой зеркальный фотоаппарат для начинающих с хорошим зумом? Тогда рассмотрите к покупке японский бренд Nikon. Камера D3400 Kit оснащена широким динамическим диапазоном, гибридным автофокусом и ручной фокусировкой. Фотографии получаются приятных цветов, высокое разрешение матрицы (24.7 МП) дает большой простор для обработки кадров на компьютере. Точки фокусировки значительно облегчают процесс съемки кадра начинающим фотографам.

Современный трехдюймовый дисплей отлично помогает при видеосъемке. ЖК дисплей дает четкое изображение, даже беглым взглядом можно оценить качество кадра. По мнению некоторых пользователей, экрану недостает функции автоповорота. Это осложняет съемку с нестандартных ракурсов. На фотоаппарате D3400 Kit получится снимать видео, в камере имеется встроенный микрофон. Для более качественной записи звука профессионалы советуют приобрести дополнительный внешний микрофон.

3. Canon EOS 4000D Kit

В недорогом зеркальном фотоаппарате Canon EOS 4000D Kit присутствуют функции, необходимые для начинающих фотографов. В комплекте идет универсальный объектив с удобным фокусным расстоянием. Для съемки в темное время суток и экспериментов с тенями в EOS 4000D встроена вспышка. Аккумулятор на 860 Ма/ч позволит сделать более 500 кадров с автоматической фокусировкой и вспышкой. Поддержка сменного объектива реализуется соединением типа байонет Canon EF/EF-S.

Зеркальный видоискатель экономично расходует заряд аккумулятора и хорошо работает при очень ярком освещении. В Canon EOS 4000D реализовано несколько способов фокусировки для резкости кадра (ручной, по лицу, автоматический). 9 точек фокусировки значительно облегчает процесс съемки. Фотоаппарат поддерживает внешние карты памяти SDHC, Secure Digital, SDXC. Можно приобрести несколько карт и не переживать о сохранности кадров во время фотосессии. Зеркальный фотоаппарат попал на третье место в рейтинге лучших камер для новичков стоимостью до 20 000 руб.

2. Nikon D5600 Kit

Nikon D5600 Kit хороший зеркальный аппарат для фотографов начального уровня. Поворотный экран будет удобен при съемке с нестандартного ракурса. Объектив в комплекте на 18-55 мм подойдет для наработки навыков и понимания различного фокусного расстояния. Благодаря поддержке сменного объектива, можно использовать другую оптику и линзы для творческих фотосъемок. С D5600 можно записать видеоролик, а для более качественного звука можно приобрести внешний микрофон под имеющийся разъем 3,5 мм.

Чувствительность до 25600 ISO позволит снимать четкие снимки при низкой освещенности. Автоматический режим выставит настройки для оптимальной экспозиции самостоятельно. Максимальное разрешение фотографий 6000 x 4000, аппарат снимает в JPEG и RAW форматах. Технология Nikon SnapBridge позволит передать снимки или ролики с камеры на смартфон.

1. Nikon D3500 Kit

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

Камера Nikon хорошо передает цвета, фокусировка быстро срабатывает, а встроенный стабилизатор помогает убрать смазанность кадра. D3500 можно подключить к смартфону через Bluetooth и передать сделанные снимки. Диапазон выдержки 30 — 1/4000 секунд позволит делать красивые ночные фотографии. Новички оценят встроенные фильтры и множество автоматических режимов. Зеркальный фотоаппарат Nikon D3500 находится на первом месте в списке хороших камер для начинающих.

Заголовки

Также в ответе вы можете получить заголовки. Вы можете посмотреть их, используя словарь headers для объекта response.

script.py

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

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

Обычно требуется заголовок content type, поскольку он показывает формат данных, например HTML, JSON, PDF, обычный текст и т. д. Однако заголовок content type обрабатывается библиотекой Requests, и вы имеете доступ ко всем возвращаемым данным.

Потоки

Еще одна эффективная оптимизация скорости — это потоковая передача запросов. При отправке запроса по умолчанию все тело ответа загружается немедленно. Лучший способ не загружать весь контент в память сразу при запросе. Для этого есть параметра stream, в библиотеке requests или атрибут content в aiohttp.

Потоковая передача с requests

import requests


# Use `with` to make sure the response stream is closed and the connection can
# be returned back to the pool.
with requests.get('http://example.org', stream=True) as r:
    print(list(r.iter_content()))

Потоковая передача с aiohttp

import aiohttp
import asyncio


async def get(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            return await response.content.read()

loop = asyncio.get_event_loop()
tasks = [asyncio.ensure_future(get("http://example.com"))]
loop.run_until_complete(asyncio.wait(tasks))
print("Results: %s" % )

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

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

Methods

Python NumPy

NumPy IntroNumPy Getting StartedNumPy Creating ArraysNumPy Array IndexingNumPy Array SlicingNumPy Data TypesNumPy Copy vs ViewNumPy Array ShapeNumPy Array ReshapeNumPy Array IteratingNumPy Array JoinNumPy Array SplitNumPy Array SearchNumPy Array SortNumPy Array FilterNumPy Random
Random Intro
Data Distribution
Random Permutation
Seaborn Module
Normal Distribution
Binomial Distribution
Poisson Distribution
Uniform Distribution
Logistic Distribution
Multinomial Distribution
Exponential Distribution
Chi Square Distribution
Rayleigh Distribution
Pareto Distribution
Zipf Distribution

NumPy ufunc
ufunc Intro
ufunc Create Function
ufunc Simple Arithmetic
ufunc Rounding Decimals
ufunc Logs
ufunc Summations
ufunc Products
ufunc Differences
ufunc Finding LCM
ufunc Finding GCD
ufunc Trigonometric
ufunc Hyperbolic
ufunc Set Operations

Python MongoDB

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

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

Adblock
detector