İş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_list
100 sayılık bir listedir. Bu sayı listesini sub_list_length
10 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_function
Listeleri 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.
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)