猿问

在Python中使用数组遇到问题

在从另一个API请求获取数组后,我正在使用请求库来映射请求数组。我正在为请求使用循环,但我确定有更好的方法来执行此操作,因为此API请求可以包含500多个项目,因此完成此循环有时需要20多分钟。

我试图使用grequests库,我不断收到递归投诉。我希望尽可能使用async / map方法,但经过研究显然不再支持异步库。

self.set_header("Access-Control-Allow-Origin", "*")response = requests.get("https://hacker-news.firebaseio.com/v0/paststories.json?print=pretty")data = response.json()story_list = []for story in data:
    temp_string = "https://hacker-news.firebaseio.com/v0/item/{}.json?print=pretty".format(story)
    story_data = requests.get(temp_string)
    story_list.append(story_data.json())

应该有一种比当前方法更好的方法来执行此循环,因为获取数据超过20分钟是不可接受的。原始数组中的API响应可以返回500+的数组,因此该方法应该是可伸缩的。


绝地无双
浏览 805回答 3
3回答

陪伴而非守候

请求是同步的,因此您的脚本会等待响应以发出新请求。所以也许你应该研究aiohttp和aysnchronous请求。这可能是一个例子:该基准是否可靠 - aiohttp vs requests

狐的传说

好吧,你只需要提高你的io-bond代码的速度,有解决方案的音调,请尝试这些链接:在asyncio中使用请求aiohttp_requests希望这些信息有所帮助。

慕田峪4524236

python数组的使用4-1、Python的数组分三种类型:(1) list 普通的链表,初始化后可以通过特定方法动态增加元素。定义方式:arr = [元素](2) Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的。定义方式:arr = (元素)(2) Dictionary 词典类型, 即是Hash数组。定义方式:arr = {元素k:v}4-2、下面具体说明这些数组的使用方法和技巧:(1) list 链表数组a、定义时初始化a = [1,2,[1,2,3]]b、定义时不初始化一维数组:arr = []多维数组:arr = [i for i in range(3), 1,[]] #注意, i for in xx 这个必须放在第一个位置,否则要先定义i,arr = [[0,1,2],1,[]]如:arr = [i for i in range(5), j for j in range(5), []]这是错误的i = 0j = 0arr = [i for i in range(5), j for j in range(5), []]这是正确的(需要初始化i、j)c、del 语句 和 : 的用法可以用 start : end 表示数组里的一个区间 ( i >= start and i < end)del 删除数组里的指定元素如: del arr[0]del arr[0, 2]newarr = arr[0, 2]d、遍历数组:for k, v in enumerate(arr):print k, v
随时随地看视频慕课网APP

相关分类

Python
我要回答