@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. Правильно ли я понимаю, что в этом случае настоящего параллелизма не получится?
  • Вопрос задан
  • 445 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы