Arbeit in Blöcke aufteilen
Teilen Sie einen Bereich für eine ausgewogene Last auf.
Arbeit in Blöcke aufteilen ist eine kostenlose Mojo Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Mojo Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Mojo Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum überhaupt Blöcke bilden?
Für jedes Element einen Thread zu starten, ist ineffizient. Teilen Sie den Bereich stattdessen in einige größere Blöcke auf, einen pro Worker.
Ein Block ist ein Abschnitt
Jeder Block ist einfach ein zusammenhängender Indexbereich, etwa von 0 bis 99 oder von 100 bis 199. Ein Worker besitzt jeweils einen solchen Bereich.
Die Anzahl der Blöcke auswählen
Eine häufige Wahl ist ein Block pro Kern. Diese Anzahl fragen Sie mit num_physical_cores beim Computer ab.
var workers = num_physical_cores()Die Blockgröße berechnen
Teilen Sie die Gesamtlänge durch die Anzahl der Worker, um zu ermitteln, wie viele Elemente jeder Worker verarbeiten sollte.
var chunk = (n + workers - 1) // workersDen Anfang eines Blocks bestimmen
Innerhalb der Arbeitsfunktion gibt der Blockindex an, wo Sie beginnen müssen. Multiplizieren Sie ihn mit der Größe des Blocks.
var start = c * chunkDas Ende begrenzen
Der letzte Block könnte über die Daten hinausreichen. Begrenzen Sie deshalb sein Ende mit min auf die Gesamtlänge, damit Sie innerhalb des gültigen Bereichs bleiben.
var end = min(start + chunk, n)Innerhalb des Blocks iterieren
Jeder Worker führt eine normale Schleife ausschließlich über seinen eigenen Bereich aus. Innerhalb des Blocks ist das ganz gewöhnlicher Code.
for i in range(start, end):
out[i] = heavy(i)parallelize über Blöcke ausführen
Rufen Sie parallelize nun mit der Anzahl der Blöcke auf, nicht mit der Anzahl der Elemente. Jeder Aufruf verarbeitet einen vollständigen Block.
parallelize[do_chunk](workers)Die Last ausgleichen
Gleich große Blöcke sorgen dafür, dass jeder Kern gleichmäßig ausgelastet ist. Ist ein Block deutlich größer, wird der entsprechende Worker erst spät fertig.
Mehr Blöcke als Kerne
Wenn manche Elemente mehr Aufwand verursachen als andere, können schnellere Worker durch mehr und kleinere Blöcke zusätzliche Arbeit übernehmen und beschäftigt bleiben.
Durch Messen abstimmen
Die beste Blockanzahl hängt von Ihren Daten und Ihrem Computer ab. Testen Sie einige Größen und behalten Sie diejenige, die in Ihrem Benchmark am besten abschneidet.
Schnelltest
Sie teilen ein Array der Länge n in einen Block pro Worker auf.
Zusammenfassung
Sie teilen den Bereich in ausgewogene Blöcke auf, begrenzen jedes Ende mit min, iterieren innerhalb eines Blocks und rufen parallelize über die Blockanzahl auf, um die Last gleichmäßig zu verteilen. 🚀
Lerne Mojo mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 30
- Lektionen
- 120
Häufig gestellte Fragen
Ist die Lektion „Arbeit in Blöcke aufteilen“ kostenlos?
Ja — der vollständige Text von „Arbeit in Blöcke aufteilen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Mojo Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Mojo Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Arbeit in Blöcke aufteilen“?
Teilen Sie einen Bereich für eine ausgewogene Last auf. Du übst Mojo Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Mojo Academy zu starten?
Keine Vorkenntnisse erforderlich. Mojo Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Arbeit in Blöcke aufteilen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Mojo Academy-Lektion Code schreiben und ausführen?
Ja. Jede Mojo Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Die Funktion parallelize
- Arbeit in Blöcke aufteilen
- Parallelisierung und Vektorisierung kombinieren
- Datenrennen vermeiden