python - 每行Pandas DataFrame Rest Call

标签 python pandas multithreading

我的 Pandas 数据框有一百万行。我必须在每一行的函数内调用rest API调用,并且需要捕获响应。每个休息电话平均需要2秒钟的时间。但是我尝试的以下情况非常缓慢

情况1:申请

def predict(x):
     res = request("XYZ")
     return res.json()

df['response_value'] = df.apply(lambda x:predict(x['request_filed']),axis=1) 

情况2:向量化而不是应用
def predict(x):
     l = []
     for each in x
         l.append(request("XYZ"))
     return l

df['response_value'] = predict(df['request_filed'] 

情况3:平行申请
def predict(x):
     res = request("XYZ")
     return res.json()

df['response_value'] = df.parallel_apply(lambda x:predict(x['request_filed']),axis=1) 

他们有什么更好的方法来加快这一过程吗?

最佳答案

它不能快于每个API调用花费的累计时间。所以我的建议是先做这些:

responses = [request(x).json() for x in df['request_filed'].values]

然后将它们添加到您的df中:
df['response_value'] = responses

这将是非常快的。看来您将获得最快的速度。

关于python - 每行Pandas DataFrame Rest Call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60828259/

相关文章:

c++ - C++ 中独立于操作系统的线程?

python - Pandas Python,根据行条件选择列

python - 超出软专用运行时内存错误

Java newSingleThreadExecutor 与带有队列的自有线程

python - 将单元格与 Pandas 合并

python - 统计 pandas 中多列问题的李克特量表结果数

java - 在 webservice 中运行一个线程

python - 基于 'for' 循环变量创建新列表

python - urlparse.urljoin() 不处理无效的父目录

python - 使用线程同时写入多个 CSV 文件