Python как ускорить получение запросов с помощью многопроцессорности - PullRequest
0 голосов
/ 16 апреля 2019

У меня работает некоторый код, который отправляет запрос get и возвращает список из 93 параметров, и я хочу использовать каждый из них, чтобы сделать еще один запрос get.Проблема в том, что для запуска требуется около 15 минут, и я бы хотел ускорить его.Я использую объект сеанса в библиотеке запросов, но он недостаточно хорош, поэтому я хочу попробовать многопроцессорную работу, но у меня возникают проблемы с его обработкой.

import requests

params_url = r'URL'
headers = {
  'authorization': 'Token sdfgsdfgsdfg'
}
response = requests.get(params_url, headers = headers)
data = response.json()
params = data['data']

s = requests.Session()
samp_url = s.get(r'SESSION_URL',headers=headers)

for param in params:
    ent_url = r'SESSION_URL'+param+r'&RESULT_FORMAT'
    resp = s.get(ent_url, headers = headers)
    print(resp)

В настоящее время в качестве теста я просто печатаюкод ответа, но мне нужно будет выполнить другие операции с данными (по сути, просто объединяя их все в один кадр данных).Каждый код ответа 200, что хорошо.Каков наилучший способ реализовать многопроцессорность, чтобы ускорить это?

1 Ответ

0 голосов
/ 16 апреля 2019

вы можете попробовать joblib

from joblib import Parallel, delayed

def p_me(param,s):
    ent_url = r'SESSION_URL'+param+r'&RESULT_FORMAT'
    resp = s.get(ent_url, headers = headers)
return resp

w = Parallel(n_jobs=-1,verbose=0)(delayed(p_me)(param,s) for param in params)
...