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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python如何使用多进程加速获取请求相关的知识,希望对你有一定的参考价值。

我有一些代码工作,发送一个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,这很好。实现多处理以加快速度的最佳方法是什么?

答案

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

以上是关于Python如何使用多进程加速获取请求的主要内容,如果未能解决你的问题,请参考以下文章

如何多线程(多进程)加速while循环(语言-python)?

超简单的Python教程系列——第16篇:多进程

python 多线程

python 复习—并发编程实战——线程多进程多协程加速程序运行实例(多线程和多进程的对比)

如何在 python 中并行化以下代码片段?

多个请求是多线程吗