Python 在迭代字典时,如何在批之间暂停?

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

在遍历字典时,我希望在每个批之间插入一个暂停(~30秒)

当我插入sleep(秒)时,它会在每条记录之间暂停。我希望它在每个批次之间暂停(即,在处理了5条记录之后)

到目前为止,我开发的代码如下:

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)
在每个块之后。否则,您将在生成的批处理的每个元素处停止(确保您知道生成器是什么)