Как спать внутри цикла for после 1000 итераций в python

#python

Вопрос:

Я использую цикл for для итерации по столбцу фрейма данных pandas таким образом:

 for i in df['column']:
    try:
        do_stuff_with_column_data
        time.sleep(10)
    except:
        continue
 

Как я могу изменить код, чтобы делать что-то с данными для 1000 строк, а затем подождать десять секунд и продолжить после этого?

Комментарии:

1. Использование цикла for для итерации по столбцу обычно гораздо менее эффективно, чем работа со всем столбцом сразу. При необходимости вы можете сначала разбить его на куски по 1000 ячеек. Что вы делаете с данными столбца?

Ответ №1:

Вы можете использовать enumerate функцию в своем for цикле-таким образом, вы получите номер индекса текущей итерации и измените код, как показано здесь.

 for index, i in enumerate(df['column']):
    do_stuff_with_column_data(i)

    if index % 1000 == 0:
        time.sleep(10)
 

Ответ №2:

 row_processed = 0

for i in df['column']:
    try:
        do_stuff_with_column_data
        row_processed  = 1
        if row_processed == 1000:
            row_processed = 0
            time.sleep(10)
    except:
        continue
 

Ответ №3:

Вы можете использовать функцию перечисления для перебора элементов, но также и для получения индекса элементов.

 import numpy as np
import time

df = np.random.rand(10000)

for i, elm in enumerate(df):
    try:
        print(elm)
        if i == 999:
            print('sleeping for 10 seconds')
            time.sleep(10)
    except:
        continue
 

Ответ №4:

Вы можете отобразить 1000 строк из фрейма данных, а затем также спать 10 секунд, используя приведенный ниже код:-

 df1 = df.head(1000)
time.sleep(10)