为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中使用数组遇到问题

在Python中使用数组遇到问题

绝地无双 2019-06-02 17:08:49
在从另一个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+的数组,因此该方法应该是可伸缩的。
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

请求是同步的,因此您的脚本会等待响应以发出新请求。所以也许你应该研究aiohttp和aysnchronous请求。

这可能是一个例子:该基准是否可靠 - aiohttp vs requests


查看完整回答
反对 回复 2019-06-02
?
狐的传说

TA贡献1804条经验 获得超3个赞


好吧,你只需要提高你的io-bond代码的速度,有解决方案的音调,请尝试这些链接:

在asyncio中使用请求

aiohttp_requests

希望这些信息有所帮助。


查看完整回答
反对 回复 2019-06-02
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

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 = 0
j = 0
arr = [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


查看完整回答
反对 回复 2019-06-02
  • 3 回答
  • 0 关注
  • 804 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信