当前位置:  开发笔记 > 编程语言 > 正文

如何加快API请求?

如何解决《如何加快API请求?》经验,为你挑选了1个好方法。



1> Łukasz Rogal..:

您可能希望并行发送请求.Python提供了multiprocessing适合这样的任务的模块.

示例代码:

from multiprocessing import Pool

def get_data(i):
    r1 = requests.get('https://maps.googleapis.com/maps/api/place/textsearch/json?query='+ i +'&key=MY_KEY')
    a = r1.json()
    pid = a['results'][0]['place_id']
    r2 = requests.get('https://maps.googleapis.com/maps/api/place/details/json?placeid='+pid+'&key=MY_KEY')
    b = r2.json()
    phone = b['result']['formatted_phone_number']
    name = b['result']['name']
    website = b['result']['website']
    return ' '.join((phone, name, website))

if __name__ == '__main__':
    terms = input("input places separated by comma").split(",")
    with Pool(5) as p:
        print(p.map(get_data, terms))


[什么`if __name__ =="__ main __":`do?](http://stackoverflow.com/questions/419163/what-does-if-name-main-do).
我会提供一些解释,尽管它可能会帮不上忙,因为它已经为时2.5年了:`with Pool..`在上下文管理器的控制下创建`Pool`对象,这意味着该对象将被销毁程序退出`with`语句范围时调用的清理代码。Pool(5)创建一个具有5个线程的线程池,这些线程都能够独立运行。这意味着您发出的第二个HTTP请求不必等待第一个HTTP请求被返回-因此,您无需一次连续进行5 200ms操作,而是一次完成5 200ms等待。
推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有