Python如何使用多进程加速获取请求

时间:2019-04-16 16:20:15

标签: python python-requests python-multiprocessing

我有一些代码可以发送一个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 :(得分:0)

您可以尝试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)