Python 在迭代字典时,如何在批之间暂停?
在遍历字典时,我希望在每个批之间插入一个暂停(~30秒) 当我插入sleep(秒)时,它会在每条记录之间暂停。我希望它在每个批次之间暂停(即,在处理了5条记录之后) 到目前为止,我开发的代码如下:Python 在迭代字典时,如何在批之间暂停?,python,dictionary,Python,Dictionary,在遍历字典时,我希望在每个批之间插入一个暂停(~30秒) 当我插入sleep(秒)时,它会在每条记录之间暂停。我希望它在每个批次之间暂停(即,在处理了5条记录之后) 到目前为止,我开发的代码如下: def chunked (dictionary, size): dictionary = iter(dictionary) while True: p = tuple(itertools.islice(dictionary,size)) if not p
def chunked (dictionary, size):
dictionary = iter(dictionary)
while True:
p = tuple(itertools.islice(dictionary,size))
if not p:
break
yield p
for chunk in chunked(x.items(), 5):
#1. Return zipcode of listing
for ID, coordinates in x.items():
geolocator = Nominatim()
try:
# approx. listing address based on latitude, longitude
location = geolocator.reverse(coordinates, timeout=None)
print(ID)
print(location)
sleep(30)
我做错了什么?有更好的方法吗?正如一些用户指出的,尝试将
睡眠(30)
的缩进减少两个级别,如下所示:
for chunk in chunked(x.items(), 5):
#1. Return zipcode of listing
for ID, coordinates in x.items():
geolocator = Nominatim()
try:
# approx. listing address based on latitude, longitude
location = geolocator.reverse(coordinates, timeout=None)
print(ID)
print(location)
sleep(30)
这样,您将在从生成器获得的每个生成批上暂停,而不是在批的每个元素上暂停。尝试将sleep函数的缩进减少两个级别,以便它只包含在外部for循环中。我相信@rp372是正确的,如果您想每5项(一批)停止一次,您应该
sleep(30)
在每个块之后。否则,您将在生成的批处理的每个元素处停止(确保您知道生成器是什么)