【发布时间】:2024-06-03 01:30:01
【问题描述】:
我有一个 python 函数,它从alphavantage.co 请求外汇数据。但是我遇到的问题是,我需要在每 5 次迭代后“暂停”请求 60 秒,因为 alphavantage 文档规定我每分钟只能发出 5 个请求。
我尝试构建一个简单的 while 循环,因为我认为这是最好的方法,但我没有获胜。我构建的 while 循环对第一个元素进行了 6 次迭代,休眠 5 秒并退出循环。就是这个样子
import time
items = ['A','B','C','D','E','F','G','H','I']
n = 0
for i in items:
while n < 6:
print(i)
n = n + 1
else:
time.sleep(5) # Delay for 5 seconds (5 seconds).
输出:
A
A
A
A
A
A
这是我所期望的:
A
B
C
D
E
# delay for 5 seconds
F
G
H
I
# exit loop
我对 while 循环的了解显然有限。我很感激这方面的一些帮助。即使这是一种完全不同的方法,只要我可以在一定次数的迭代后暂停一个循环一定的时间。如果您想查看我在此question 上提供的实际功能@
【问题讨论】:
-
每次迭代后暂停 12 秒是一个合理的答案吗?
-
使用
if而不是while。 -
如果你需要 5 个请求/分钟,为什么每次运行后不睡 12 秒? 5次连续迭代后是否强制休眠?
-
你永远不会在你的while循环中改变
i,因此它总是保持"A" -
我认为我不应该解释基本的数学。您在 60 秒内有 5 个请求,您可以按照自己的方式安排它们。如果连续运行 5 次后不需要等待 60 秒,我相信 5 次睡眠 12 秒就可以了。
标签: python for-loop while-loop