2015-09-22 4 views
0

В настоящее время я использую этот код, который я думаю, что занимает больше времени, тем больше растет лист:Python gspread: эквивалент getLastRow()

def findLastRow(): 
    global spreadsheet 
    global datastartrow 

    print 'rows: ', worksheet.row_count 

    lastrow = datastartrow 

    while(True): 
     val = worksheet.cell(lastrow, datastartrow).value 

     if val == '': 
      lastrow -= 1 

      break 

     lastrow += 1 

    return lastrow 

Есть более эффективный способ, как getLastRow от газа?

ответ

1

Я думаю, что я нашел обходной путь, который до сих пор не является эффективным, но несколько быстрее, вот мой новый отсчет тест против старого захваченный из консоли:

trying to login to google sheets 
logged in 
sync time 
starting count 1 
colvals: 1001 
count 1 took: 3.41200017929 seconds 

starting count 2 
lastrow: 1001 
count 2 took: 531.482000113 seconds 

Это новое против старого:

def findLastRow(): 
    global spreadsheet 
    global datastartrow 
    global datastartcolumn 

    t0 = time.time() 

    print 'starting count 1' 
    colvals = worksheet.col_values(1) 
    t1 = time.time() 

    print 'colvals: ', len(colvals) 

    print 'count 1 took: ', str(t1 - t0) + ' seconds' 

    # return len(colvals) 

    t0 = time.time() 

    print 'starting count 2' 

    lastrow = datastartrow 

    while(True): 
     val = worksheet.cell(lastrow, datastartrow).value 

     if val == '': 
      lastrow -= 1 

      break 

     lastrow += 1 

    print 'lastrow: ', lastrow 

    t1 = time.time() 

    print 'count 2 took: ', str(t1 - t0) + ' seconds' 

    return lastrow 
Смежные вопросы