vielen Dank für die Hilfe die letzten Tage. Ich hab leider schon wieder eine Frage.
Ich möchte einen Iterator in Blocks von mehreren items abfragen (z.B. 10000 items auf einmal). Der iterator ist sehr lang (mehrere Millionen items) und ich möchte die Blocks dann in einer Funktion bearbeiten und diese an den ProcessPoolExecutor weitergeben, um den Ablauf schneller zu machen.
Ich habe das ganze bisher als Verschachtelung von 3 loops gelöst: Außen eine while-loop, die bis zum Ende des iterators True bleibt, in der Mitte eine Loop für die Anzahl der parallelen Prozesse, die gestartet werden sollen und innen noch eine Loop für die Anzahl an items pro Prozess.
Code: Alles auswählen
iterator = iter(range(100))
bool_more_input = True
while bool_more_input:
items_for_process = [[] for _ in range(4)] #Liste leeren
for i in range(4): #Anzahl der Prozesse
k=0
while k < 10 and bool_more_input: #Anzahl items pro Prozess
try:
item = next(iterator)
items_for_process[i].append(item)
k += 1
except StopIteration:
bool_more_input = False
print('Give items to ProcessPoolExecutor:')
print(items_for_process)