Python запрашивает неблокирование?

Возможный дубликат:
Асинхронные запросы с запросами Python

Модуль python запрашивает неблокирование? Я ничего не вижу в документах о блокировке или неблокировании.

Если он блокирует, какой модуль вы бы предложили?

  • передавать и получать значения между скриптом python и applescript
  • Исключение символов в Python и sqlite
  • Pandon pandas вставляют длинные целые числа
  • Как я могу запустить каждого работника в многопроцессорном режиме. Пул в новой оболочке?
  • Преобразование случая змеи в нижний корпус верблюда (lowerCamelCase)
  • Если py2exe включает мои файлы данных (например, include_package_data)
  • Использование Cython для переноса шаблона c ++ для принятия любого массива numpy
  • Matplotlib: `pcolormesh.get_array ()` возвращает сплющенный массив - как вернуть данные 2D?
  • 2 Solutions collect form web for “Python запрашивает неблокирование?”

    Как и urllib2 , requests блокируются.

    Но я бы не предложил использовать другую библиотеку.

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

    Если у вас есть сотни, вы можете поместить их в threadpool. Пример ThreadPoolExecutor на странице concurrent.futures – это почти то, что вам нужно; просто измените вызовы urllib вызовы requests . (Если вы используете 2.x, используйте futures , backport из тех же пакетов на PyPI.) Недостатком является то, что вы фактически не запускаете все 1000 запросов одновременно, просто первый, скажем, 8.

    Если у вас сотни, и все они должны быть параллельно, это звучит как работа для gevent . Имейте это monkeypatch все, а затем напишите тот же самый код, который вы пишете, с потоками, но не создавая greenlet s вместо Thread s.

    grequests , который развился из старой поддержки async непосредственно в requests , эффективно делает gevent + requests для вас. И для простейших случаев это здорово. Но для чего-то нетривиального, мне легче читать явный код gevent . Ваш пробег может отличаться.

    Конечно, если вам нужно сделать что-то действительно фантастическое, вы, вероятно, захотите пойти на twisted , tornado или tulip (или подождать несколько месяцев, чтобы tulip стал частью stdlib).

    Это блокирует, но это напомнило мне о какой-то аккуратной маленькой обертке, которую я знаю, о которой я знаю, о которой я рассказывал, которая отвалилась на eventlet, а затем потоки, если ни один из этих двух не присутствовал. Вы можете добавлять функции к структурам данных, которые напоминают либо dicts, либо списки, и как только функции будут добавлены, они выполняются в фоновом режиме, а значения, возвращаемые из функций, будут доступны вместо функций, как только они будут выполнены. , Это здесь .

    Python - лучший язык программирования в мире.