Задать вопрос
@zlodiak

Как процессы распределяются между ядрами?

Если использовать потоки (threads), то все воркеры будут выполняться одним ядром, деля время процессора при помощи GIL. Однако, если использовать модуль multiprocessing, то задачи можно распараллелить между ядрами.

import multiprocessing
import time
import random

def worker(number):
    sleep = random.randrange(1, 10)
    time.sleep(sleep)
    print("I am Worker {}, I slept for {} seconds".format(number, sleep))

for i in range(5):
    t = multiprocessing.Process(target=worker, args=(i,))
    t.start()


Как видите, в приведённом примере одновременно запускаются 5 задач. Допустим, что компьютер, который выполняет эту программу имеет 4 ядра. Скажите пожалуйста:
1. как в этом случае 4 ядра поделят между собой 5 процессов?
2. Правильно ли я понимаю, что в этом случае настоящего параллелизма не получится?
  • Вопрос задан
  • 499 просмотров
Подписаться 2 Простой 6 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы