0Pricing
Mojo Academy · Урок

Функция parallelize

Распределяйте итерации цикла между потоками.

«Функция parallelize» — бесплатный урок Mojo Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Mojo Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Mojo Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

One Core Is Not Enough

A plain loop runs on a single core while the rest sit idle. For heavy work, that wastes most of your CPU.

for i in range(n):
    out[i] = heavy(i)

Spread the Work

Parallelism means handing different loop iterations to different cores so they all work at the same time. 🧵

Meet parallelize

Mojo's parallelize helper runs your loop body across many threads for you, so you skip the manual thread plumbing.

from algorithm import parallelize

The Work Closure

You write a small function that does the work for one index. Mojo calls it many times, once per iteration.

fn work(i: Int):
    out[i] = heavy(i)

Pass the Closure as a Parameter

The closure goes in square brackets as a compile-time parameter, not as a normal call argument. Mojo specializes on it.

parallelize[work](n)

The Count Is Runtime

The number in the parentheses is how many work items to run. That count is an ordinary runtime value.

parallelize[work](num_items)

Ask the Machine for Cores

Use num_physical_cores from the sys module to learn how many real cores you have to spread work across.

from sys import num_physical_cores

Cap the Worker Count

An optional second argument sets how many workers run at once. Matching it to your cores often works best.

parallelize[work](n, num_physical_cores())

Each Call Is Independent

parallelize assumes work items do not depend on each other's order. Each call should stand on its own.

Best for Heavy Loops

Parallelism shines when each item does real work. For tiny loops, the thread overhead can cost more than it saves.

Measure the Speedup

Time the loop before and after going parallel. A real benchmark tells you whether the extra threads actually helped.

Quick Check

You want to run a loop body across several CPU cores in Mojo.

Recap

You import parallelize, pass a per-item closure as a bracket parameter and the count in parentheses, then size workers to your cores for a real speedup. 🚀

Часто задаваемые вопросы

Урок «Функция parallelize» бесплатный?

Да — полный текст урока «Функция parallelize» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Mojo Academy, подпишись на CoddyKit PRO. Курс Mojo Academy содержит 4 уроков всего.

Чему я научусь в уроке «Функция parallelize»?

Распределяйте итерации цикла между потоками. Ты практикуешь Mojo Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Mojo Academy?

Предыдущий опыт не требуется. Mojo Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Функция parallelize»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Mojo Academy?

Да. Каждый урок Mojo Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Функция parallelize
  2. Разбиение работы на блоки
  3. Объединение параллелизма и векторизации
  4. Предотвращение гонок данных
← Назад к Mojo Academy