İşlenecek birçok sayıda öğe listeniz olduğu bazı durumlar vardır, ancak listeyi işleyen sistemlerin bazı sınırlamaları nedeniyle bunları tek seferde yapamamaktayız.

Bazı örnekler:

  • İstekte aynı anda yalnızca 100 öğeyi destekleyen bir API'ye erişmeniz gerektiğinde, orijinal listenizi 100 öğeden oluşan listelere bölmeniz ve sonuçları birleştirmeniz gerekir.
  • Paralel olarak işlemek istediğiniz uzun bir öğe listeniz mevcut. Bunları istediğiniz alt işlem sayısına bölebilir ve bağımsız olarak işleyebilirsiniz.
long_list = list(range(100))
sub_list_length = 10
sub_lists = [
    long_list[i : i + sub_list_length]
    for i in range(0, len(long_list), sub_list_length)
]

Kodu parçalamaya çalışalım

long_list100 sayılık bir listedir. Bu sayı listesini sub_list_length10 ile belirtilen alt listelere ayırıyoruz. Listenin anlaşılması orijinal listenin dilimlerine dayanmaktadır.

print(long_list)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
print(sub_lists)
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26, 27, 28, 29], [30, 31, 32, 33, 34, 35, 36, 37, 38, 39], [40, 41, 42, 43, 44, 45, 46, 47, 48, 49], [50, 51, 52, 53, 54, 55, 56, 57, 58, 59], [60, 61, 62, 63, 64, 65, 66, 67, 68, 69], [70, 71, 72, 73, 74, 75, 76, 77, 78, 79], [80, 81, 82, 83, 84, 85, 86, 87, 88, 89], [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]]
print(list(range(0, len(long_list), sub_list_length)))
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
Alt Listelerin İşlenmesi
results = []
for sub_list in sub_lists:
    partial_result = process_function(sub_list)
    results.append(partial_result)

process_functionListeleri işleyen herhangi bir işlev burada olabilir. Örneğimizde bu, API'ye veya listeleri işleyen alt işlemlere yapılan çağrı olacaktır.

Bonus İpucu: İlerlemeyi takip etme

Ek olarak, bir açık kaynak kitaplığı kullanarak for döngüsünü tekrarlanabilir hale getirerek sürecin ilerleyişini takip edebilirsiniz, tqdm  her yinelemenin ne kadar sürdüğünü de gösteren bir ilerleme çubuğu görüntüler. Herhangi bir yinelenebilir için de çalışır.

from tqdm import tqdm
results = []
for sub_list in tqdm(sub_lists):
    partial_result = process_function(sub_list)
    results.append(partial_result)

İlerleme çubuğu