迭代字典时如何在批处理之间暂停?

时间:2017-06-12 21:04:09

标签: python dictionary

我想在迭代字典时在每个批处理之间插入一个暂停(约30秒)。

当我插入睡眠(秒)时,它会在每个记录之间暂停。我希望它在每个批次之间暂停(即,在处理了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)

我在这里做错了什么?还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

正如一些用户指出的那样,尝试将render json: @questions, fields: [:title, :user], include: ['user', 'user.cities'] 的缩进缩小两级,如下所示:

sleep(30)

通过这种方式,您将暂停从生成器获得的每个产生的批次,而不是暂停批次的每个元素。