Python 每 60 秒执行 5 次迭代的 while 循环
Python while loop that does 5 iterations every 60 seconds
我有一个 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 循环的了解显然是有限的。我很感激这方面的帮助。即使是完全不同的方法,只要我可以在一定次数的迭代后将循环暂停一定时间即可。如果你想看看我在这个
上的实际功能
这应该符合您的描述:
for n,i in enumerate(items):
print(i)
if n%5 == 4:
time.sleep(5) # Your text said 60 seconds, but your code said 5
当您处于 while
循环中时,i
从未改变。如果您希望结果像您预期的那样,您可以这样做:
import time
items = ['A','B','C','D','E','F','G','H','I']
n = 0
for i in items:
print(i)
n = n + 1
if n % 5 == 0 and n != 1:
time.sleep(5) # Delay for 5 seconds (5 seconds).
甚至不使用 while 循环。
当然,如果您想暂停 60 秒,只需在 time.sleep()
函数中更改即可。
您的 while
循环没有任何意义。您需要检查您的迭代以及它是否可以被 5 个睡眠整除。要获取迭代的索引,您可以使用 enumerate
函数:
import time
items = ['A','B','C','D','E','F','G','H','I']
for i, item in enumerate(items):
print(item)
if i % 5 == 4: # each fifth iteration
time.sleep(60)
另一种方法是每次迭代休眠 12 秒:
import time
items = ['A','B','C','D','E','F','G','H','I']
for item in items:
print(item)
time.sleep(12)
我有一个 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 循环的了解显然是有限的。我很感激这方面的帮助。即使是完全不同的方法,只要我可以在一定次数的迭代后将循环暂停一定时间即可。如果你想看看我在这个
这应该符合您的描述:
for n,i in enumerate(items):
print(i)
if n%5 == 4:
time.sleep(5) # Your text said 60 seconds, but your code said 5
当您处于 while
循环中时,i
从未改变。如果您希望结果像您预期的那样,您可以这样做:
import time
items = ['A','B','C','D','E','F','G','H','I']
n = 0
for i in items:
print(i)
n = n + 1
if n % 5 == 0 and n != 1:
time.sleep(5) # Delay for 5 seconds (5 seconds).
甚至不使用 while 循环。
当然,如果您想暂停 60 秒,只需在 time.sleep()
函数中更改即可。
您的 while
循环没有任何意义。您需要检查您的迭代以及它是否可以被 5 个睡眠整除。要获取迭代的索引,您可以使用 enumerate
函数:
import time
items = ['A','B','C','D','E','F','G','H','I']
for i, item in enumerate(items):
print(item)
if i % 5 == 4: # each fifth iteration
time.sleep(60)
另一种方法是每次迭代休眠 12 秒:
import time
items = ['A','B','C','D','E','F','G','H','I']
for item in items:
print(item)
time.sleep(12)